Foros del Web » Programando para Internet » PHP »

Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Estas en el tema de Algunos e-mails enviados con mail() llegan con el código fuente HTML.. en el foro de PHP en Foros del Web. Hola! Hace mucho tiempo que para enviar e-mails a través del formulario de contacto de las webs que realizo utilizo la función mail() de php. ...
  #1 (permalink)  
Antiguo 02/11/2010, 12:32
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Hola!

Hace mucho tiempo que para enviar e-mails a través del formulario de contacto de las webs que realizo utilizo la función mail() de php. Siempre todo ok pero el otro día un cliente me comentó que en los mails que le llegaban se leía el código fuente, no el resultado de dicho código.
- ¿por que le pasa eso?, utiliza outlook 2007 y en mi outlook 2007 no me pasa...
- ¿Puede ser que entren en conflicto los dos header (el del mail y el de la web) ??

El código:
http://www.bpaste.net/show/10592/
Un saludo!
  #2 (permalink)  
Antiguo 02/11/2010, 13:48
Avatar de andres_aquino  
Fecha de Ingreso: septiembre-2010
Ubicación: $("#place").html("FDW");
Mensajes: 138
Antigüedad: 13 años, 7 meses
Puntos: 24
Información Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Hola davidj, podrías hacer lo siguiente:

1. Reemplaza todas las líneas donde pones $message = "..."; por la función ob_start() PHP para que puedas tenerlo en menos líneas. El código de reemplazo donde están las líneas $message quedaría así:

Código PHP:
ob_start();
include(
"templates/template-mail.tpl");
$message ob_get_contents();
ob_end_flush() 
Lo que hace la función ob_start() es (en términos sencillos) encerrar todo el contenido del archivo que incluyes en un buffer el cual lo vas a procesar más adelante enviando el email con la función mail(). Hasta aquí, es todo lo que debes hacer para reducir esas líneas muy largas de tu código actual por este que te estoy dando.

template-mail.tpl es (obviamente) un template que contiene todo el código HTML del mensaje que vas a enviarlo. En este archivo coloca todo el código y reemplaza las variables $nombre, $empresa y las demás por $_POST['nombre'], $_POST['empresa'] y borrar las líneas:

Código PHP:
$nombre $_POST['nombre'];
$empresa $_POST['empresa'];
$e_mail $_POST['mail'];
$telefono $_POST['telefono'];
$direccion $_POST['direccion'];
$poblacion $_POST['poblacion'];
$mensaje $_POST['mensaje']; 
Bueno esta es una recomendación mía que la puedes implementar en este y varios proyectos para poder simplificar aún más las líneas de tu código fuente y además poder cargar otros tipos de mails a enviar según el tipo de usuario y demás cosas, es una recomendación que tal vez te sea muy útil en algún momento. Personalmente lo estuve usando en un proyecto hace unos meses atrás.

2. En la línea de los headers ($header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";) podrías probar reemplazando el charset de ISO-8859-1 a UTF-8 para que pueda funcionarte sin ningún problema en cualquier cliente de correo electrónico y también ponle esto mismo en la cabecer del código HTML del template de tu mail a enviar, porque por lo que veo en la cabecera del mail tienes ISO-8859-1 y en la de tu página web tienes UTF-8. Prueba lo que te he dicho y si no te funciona prueba poniendo ambos headers (el del mail y el de la página) en uno de ellos, es decir, en ISO-8859-1 o bien UTF-8 en ambos headers. Tal vez sea esta una solución a tu problema, si te funciona puedes aviarlo para comprobar que tal te fue.

Bueno davidj, espero te sirvan mis recomendaciones al respecto.

Saludos,
Un abrazo!
  #3 (permalink)  
Antiguo 03/11/2010, 02:47
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Gracias por tu respuesta Andres y por tu tiempo!

Provaré a ver que tal, lo que es curioso es que en mi outlook 2007 funciona ok y en el suyo no, que raro no?.. prové con phpmailer y todo ok... ¿ es mejor utilizar alguna clase como por ejemplo phpmailer ?

Saludos !!
  #4 (permalink)  
Antiguo 03/11/2010, 04:44
 
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 44
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Sobre lo de usar phpmailer o no depende del grado de seguridad que quieras. Lo bueno de phpmailer es que tiene muchas opciones configurables y, además valida los campos del email. Mail sólo hace lo que tú le digas.

Para ir tirando usa mail(), pero si necesitas seguridad y validaciones o usas phpmailer o te curras una validación tu mismo y usas mail().
  #5 (permalink)  
Antiguo 03/11/2010, 05:44
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

negrocebollin, ¿ entonces phpmailer también evita recibir mails de spam ?, es decir, con mail() algunas veces se recibe un mail vació o con contenido de publicidad, ¿ con phpmailer se puede evitar esto ?

Gracias!!
  #6 (permalink)  
Antiguo 03/11/2010, 13:22
Avatar de andres_aquino  
Fecha de Ingreso: septiembre-2010
Ubicación: $("#place").html("FDW");
Mensajes: 138
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Mira davidj, puedes usar tanto la función mail() como el phpmailer según guste, y también por lo que te estaba comentando negrocebollin. Ahora bien, con el phpmailer (hasta donde sé) no se puede evitar los mails spam pero sí validar que los mails (o sea, que exista y sea una dirección real).

Con respecto a lo del outlook 2007, en serio no encuentro aún la solución de porque a ti si te sale correctamente el mail y al otro usuario no. Si te funcionó alguna de las soluciones que te dí, podrías compartirlo para que también otros usuarios del foro que lleguen a tener ese problema, tengan cómo solucionarlo... además me gustaría saber si te funcionó mi recomendación

Saludos!
__________________
Te sirvió mi ayuda? +1 ;D
Andy Aquino - @aquiandres
  #7 (permalink)  
Antiguo 03/11/2010, 13:43
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 20 años, 6 meses
Puntos: 18
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Hola Andres, estoy probando, de momento no acaba de salir y el problema que tengo es k claro, le tengo k estar preguntando continuamente al cliente si le va o no por que a mi si me funciona. Como con phpmailer todo ok seguramente lo dejaré con phpmailer.

Gracias de nuevo por tu interés!!!
  #8 (permalink)  
Antiguo 04/11/2010, 10:28
Avatar de andres_aquino  
Fecha de Ingreso: septiembre-2010
Ubicación: $("#place").html("FDW");
Mensajes: 138
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: Algunos e-mails enviados con mail() llegan con el código fuente HTML..

Ok David. Cuando gustes!

Saludos!
__________________
Te sirvió mi ayuda? +1 ;D
Andy Aquino - @aquiandres

Etiquetas: e-mails, enviados, html, llegan, mail, fuentes
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 22:30.