Foros del Web » Programando para Internet » PHP »

Problema al formatear un envio por mail de formulario

Estas en el tema de Problema al formatear un envio por mail de formulario en el foro de PHP en Foros del Web. He creado un formulario en HTML. Posteriormente genero la página PHP donde recupero los datos insertados en el formulario. El problema es que cuando mando ...
  #1 (permalink)  
Antiguo 10/07/2013, 04:00
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Problema al formatear un envio por mail de formulario

He creado un formulario en HTML.
Posteriormente genero la página PHP donde recupero los datos insertados en el formulario.
El problema es que cuando mando el mail, lo que recibo me hace un salto de línea por cada cada ves que coloco \r\n, pero llega un momento que no hace caso y ya no me hace esos saltos de línea.

Os paso el código de envio del mail.

/*Creamos el header*/
$header = 'From: ' . $nombre . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";

/*Creamos el mensaje*/
$mensaje = "Los datos del formulario son los siguientes: \r\n";
$mensaje .= "Nombre: ".$nombre." \r\n \r\n";
$mensaje .= "Sección reserva \r\n";
$mensaje .= "Pregunta1 ".$reserva1." \r\n";
$mensaje .= "Pregunta2 ".$reserva2." \r\n";
$mensaje .= "Pregunta3 ".$reserva3." \r\n";
$mensaje .= "Pregunta4 ".$reserva4." \r\n";
$mensaje .= "Pregunta5 ".$reserva5." \r\n";
$mensaje .= "Pregunta6 ".$reserva6." \r\n";
$mensaje .= "Comentarios sobre las reservas: ".$cometario_reserva." \r\n";
$mensaje .= "Entradas \n";
$mensaje .= "Persona que le atiende ". $nombre_entrada . "\n";
$mensaje .= "¿Puede localizarla fácilmente? ". $entrada2 . "\n";
$mensaje .= "¿Le resuelve los problemas o consultas de forma rápida y eficaz? ". $entrada3 . "\n";
$mensaje .= "¿Amabilidad? ". $entrada4 . "\n";
$mensaje .= "Valoración general ". $entrada5 . "\n";
$mensaje .= "Comentarios sobre las entradas: ".$cometario_entradas."\n\n";
$mensaje .= "Limpieza \n";
$mensaje .= "¿Le satisface que nosotros pongamos la ropa de la casa? ". $limpieza1 . "\n";
$mensaje .= "¿Le ha parecido de una calidad suficiente? ". $limpieza2 . "\n";
$mensaje .= "Las personas que le hacen la limpieza. ¿Dejan la casa en perfecto estado? ". $limpieza3 . "\n";
$mensaje .= "Nosotros no nos encargamos del jardín, piscina o pequeñas reparaciones. ¿Le interesaría que nos encargáramos de estos temas? ". $limpieza4 . "\n";
$mensaje .= "Valoración general ". $limpieza5 . "\n";
$mensaje .= "Comentarios sobre la limpieza: ".$cometario_limpieza." \n\n";
$mensaje .= "Administración \n";
$mensaje .= "¿Puede localizarlo fácilmente? ". $administracion1 . "\n";
$mensaje .= "¿Le resuelve los problemas o consultas de forma rápida y eficaz? ". $administracion2 . "\n";
$mensaje .= "¿Amabilidad? ". $administracion3 . "\n";
$mensaje .= "¿Tiene usted claro el contrato que firma con ibizarentahouse®? ". $administracion4 . "\n";
$mensaje .= "¿Quiere que le visitemos para preparar la nueva temporada? ". $administracion5 . "\n";
$mensaje .= "Comentarios sobre la administración: ".$cometario_administracion."\n\n";
$mensaje .= "Resumen \n";
$mensaje .= "Valore su satisfacción general: ". $satisfaccion . "\n";
$mensaje .= "Cualquier comentario general: ". $cometario_satisfaccion . "\n\n";
$mensaje .= "Nuevos servicios \n";
$mensaje .= "Internet: ". $internet . "\n";
$mensaje .= "Posicionamiento: ". $posicionamiento . "\n";
$mensaje .= "Desperfectos: ". $desperfactos. "\n";
$mensaje .= "Seguridad: ".$seguridad."\n";

echo $mensaje;


$para = "[email protected]";
$asunto = "Encuesta satisfaccion propietarios";

mail($para,$asunto,utf8_decode($mensaje),$header);

Sabeis cual puede ser el problema?
  #2 (permalink)  
Antiguo 10/07/2013, 04:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Problema al formatear un envio por mail de formulario

Lo que se ve es que apartir de un momento dejas de usar \r\n para usar solo \n...??

A partir de que momento deja de hacer caso?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/07/2013, 05:08
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

No tiene nada que ver.
En la parte en que utilizo \r\n hay un momento que dehja de hacer el salto de línea, conctramente a partir de la Pregunta6.
Os paso lo que envia:

Los datos del formulario son los siguientes:
Nombre: Luis

Sección reserva
Pregunta1 Si
Pregunta2 2
Pregunta3 3
Pregunta4 2
Pregunta5 4
Pregunta6 Si
Comentarios sobre las reservas: adasdasdasdasd Entradas Persona que le atiende Yo mismo ¿Puede localizarla fácilmente? 1 ¿Le resuelve los problemas o consultas de forma rápida y eficaz? 2 ¿Amabilidad? 3 Valoración general 4 Comentarios sobre las entradas: Otro más

Gracias.
  #4 (permalink)  
Antiguo 10/07/2013, 05:36
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema al formatear un envio por mail de formulario

Precisamente donde dejas de usar \r\n es cuando ya no hace el salto de línea.

Por comodidad/legibilidad podrías usar HEREDOC para asignar el contenido:

Código PHP:
Ver original
  1. // Envias el mensaje como HTML
  2. $header .= "Content-type: text/html\r\n";
  3.  
  4. $mensaje = <<<EOT
  5.     Nombre: $nombre
  6.     Correo: $correo
  7.     Comentarios: $comentarios
  8.     Etcétera: $etc
  9. EOT;
  10.  
  11. // Luego simplemente conviertes los saltos de línea en <br />
  12. $mensaje = nl2br($mensaje);
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 10/07/2013, 06:43
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

He probado el tema del HEREDOC y funciona perfectamente.

Por último hay alguna forma de poder insertar código HTML dentro del HEREDOC, con etiquetas tipo <b>,<h2>, etc.

Muchas gracias.
  #6 (permalink)  
Antiguo 10/07/2013, 07:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema al formatear un envio por mail de formulario

Ya lo intentaste? o preguntas para saber si vale la pena intentarlo?
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 10/07/2013, 08:16
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

He intentado poner etiquetas HTML dentro del HEREDOC pero las muestra literalmente no las ejecuta.
Pregunto si hay alguna manera de hacerlo por si no es muy complicado intentarlo.

Gracias.
  #8 (permalink)  
Antiguo 10/07/2013, 09:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema al formatear un envio por mail de formulario

Con HEREDOC puedes crear toda una página, incluyendo todas las etiquetas habidas y por haber, el problema es por otra causa como:

Agregaste el encabezado para especificar contenido text/html?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 11/07/2013, 00:15
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

Si le añado el enel encabezado la sigueinte línea:
$header .= "Content-Type: text/plain";
No hace correctamente los saltos de línea. Ni utiliza las etiquetas html.

Si por el contrario le añado esta otra línea:
$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; ó $header .= "Content-Type: text/html";
No le da formato al texto, lo manda todo seguido y no utliza las etiquetas html.

Paso el resto del código del header:
$header = 'From: ' . $nombre . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
  #10 (permalink)  
Antiguo 11/07/2013, 12:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema al formatear un envio por mail de formulario

Intenta agregando al inicio del contenido <html><body> y al final </body></html>, creo que es lo único que falta.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 12/07/2013, 02:26
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

Sigue sin funcionarme, paso el código:

/*Creamos el header*/
$header = 'From: ' . $nombre . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
//$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

/*Creamos el mensaje*/
$mensaje = <<<EOT
<html><body>
Los datos del formulario son los siguientes:
Nombre: $nombre

Sección reserva
¿Ha hablado alguna vez con ella? $reserva1
¿Puede localizarla fácilmente? $reserva2
¿Le resuelve los problemas o consultas de forma rápida y eficaz? $reserva3
¿Amabilidad? $reserva4
¿Entiende perfectamente el formulario de confirmación de reserva que le mandamos cada vez que hay una reserva para su propiedad? $reserva5
¿Quiere que nos pongamos en contacto para explicarlo? $reserva6
Comentarios sobre las reservas: $cometario_reserva

Entradas
Persona que le atiende: $nombre_entrada
¿Puede localizarla fácilmente? $entrada2
¿Le resuelve los problemas o consultas de forma rápida y eficaz? $entrada3
¿Amabilidad? $entrada4
Valoración general: $entrada5
Comentarios sobre las entradas: $cometario_entradas

Limpieza
¿Le satisface que nosotros pongamos la ropa de la casa? $limpieza1
¿Le ha parecido de una calidad suficiente? $limpieza2
Las personas que le hacen la limpieza. ¿Dejan la casa en perfecto estado? limpieza3
Nosotros no nos encargamos del jardín, piscina o pequeñas reparaciones. ¿Le interesaría que nos encargáramos de estos temas? $limpieza4
Valoración general $limpieza5
Comentarios sobre la limpieza: $cometario_limpieza

Administración
¿Puede localizarlo fácilmente? $administracion1
¿Le resuelve los problemas o consultas de forma rápida y eficaz? $administracion2
¿Amabilidad? $administracion3
¿Tiene usted claro el contrato que firma con ibizarentahouse®? $administracion4
¿Quiere que le visitemos para preparar la nueva temporada? $administracion5
Comentarios sobre la administración: $cometario_administracion

Resumen
Valore su satisfacción general: $satisfaccion
Cualquier comentario general: $cometario_satisfaccion

Nuevos servicios
Internet: $internet
Posicionamiento: $posicionamiento
Desperfectos: $desperfactos
Seguridad: $seguridad
</html></body>

EOT;

//$para = "[email protected] ";
$para = "[email protected]";
$asunto = "Encuesta satisfaccion propietarios";

mail($para,$asunto,utf8_decode($mensaje),$header);

Gracias.
  #12 (permalink)  
Antiguo 12/07/2013, 02:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema al formatear un envio por mail de formulario

Intenta con nl2br()
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 12/07/2013, 03:16
Avatar de Rodrigo_01  
Fecha de Ingreso: enero-2005
Mensajes: 61
Antigüedad: 19 años, 10 meses
Puntos: 6
Respuesta: Problema al formatear un envio por mail de formulario

lo que siempre hago es introducir todo el html en una variable para ser enviado
  #14 (permalink)  
Antiguo 12/07/2013, 04:37
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Problema al formatear un envio por mail de formulario

Lo he intentado hacer de las dos formas y sigue sin funcionar.
  #15 (permalink)  
Antiguo 19/07/2013, 21:26
 
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 1
el problema que tienes es que cierras al reves </html></body> cuando debes cerrar primero el body y luego el html.

Cita:
Iniciado por lumarpa Ver Mensaje
Lo he intentado hacer de las dos formas y sigue sin funcionar.
Como soy nuevo en el foro, no me entero aun de como funciona, pero por si no has leido el anterior msg. te contesto respondiendote, asi por lo menos seguro que te avisará el foro.
Si ya has resuelto el problema, genial. Caso contrario, el tema es que tienes las etiquetas cambiadas al final de los datos a mostrar debe ir como en un html, primero cerrar el body y luego el HTML y me imagino que lo has puesto entre comillas todo no?
Con eso deberia funcionar.
Te dejo un ejemplo sencillo.

$msjCorreo = "<<<EOT <html><body> El/la Sr./Sra. $nombre, ha enviado el siguiente mensaje: $mensaje <br>Cualquier respuesta debe ser enviada a su dirección de correo: $email <br><br>Un servicio prestado por <a href='http://www.i-commweb.net'>i-CommWeb.net</a></body></html>";

Última edición por Triby; 20/07/2013 a las 04:16

Etiquetas: formatear, formulario, html, mail
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:07.