Foros del Web » Programando para Internet » PHP »

Funcion mail no envía HTML

Estas en el tema de Funcion mail no envía HTML en el foro de PHP en Foros del Web. Saludos, Tengo un pequeño problema, estoy procesando un formulario que quiero se envíe como HTML mediante la funcion Mail. He probado en un servidor de ...
  #1 (permalink)  
Antiguo 15/06/2009, 04:22
 
Fecha de Ingreso: septiembre-2005
Mensajes: 37
Antigüedad: 18 años, 7 meses
Puntos: 0
Funcion mail no envía HTML

Saludos,

Tengo un pequeño problema, estoy procesando un formulario que quiero se envíe como HTML mediante la funcion Mail.

He probado en un servidor de desarrollo local (Xampp) y todo funciona correctamente, en todos los lectores de correo (Outlook, Thunderbird, Webmails...)

Sin embargo, al ponerlo online, sin tocar una sóla línea de código, en Outlook, no me llega el html, sino como texto plano (el Content-type está correctamente declarado).

Estoy reduciendo el caso a lo más básico, he cogido un script básico de ejemplo de php. net (doy por hecho que toda la sintaxis es correcta), y me sucede el mismo error.

En local, tengo php 5.2.8 y online 5.1.6, ¿puede radicar aquí la diferencia?

Me estoy volviendo loco intentando averiguar donde está el fallo y no hay manera.

¿Alguna idea?
  #2 (permalink)  
Antiguo 15/06/2009, 04:37
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Funcion mail no envía HTML

Hola Knibal,

En principio no debería haber ningún problema con la versión de PHP que comentas. ¿Podrías poner el código en el que generas las distintas partes del mensaje (cabeceras, cuerpo, asunto, etc.)? Quizás podamos detectar algún problema en el código si lo compartes.

Salu2,
Carlos.
  #3 (permalink)  
Antiguo 15/06/2009, 04:49
 
Fecha de Ingreso: septiembre-2005
Mensajes: 37
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Funcion mail no envía HTML

Hola Carlos,

Voy a intentar poner el código (he quitado las direcciones de email porque aun no tengo 30 mensajes publicados y no se me permite por protección de spam):

Código:
<?php
// múltiples recipientes
$para  = 'direccion de email 1' . ', '; // note la coma
$para .= 'direccion de email 2';

// asunto
$asunto = 'Recordatorios de Cumpleaños para Agosto';

// mensaje
$mensaje = '
<html>
<head>
  <title>Recordatorios de Cumpleaños para Agosto</title>
</head>
<body>
  <p>¡Aquí están los cumpleaños que vienen en Agosto!</p>
  <table>
    <tr>
      <th>Persona</th><th>Día</th><th>Mes</th><th>Año</th>
    </tr>
    <tr>
      <td>Juan</td><td>3</td><td>Agosto</td><td>1970</td>
    </tr>
    <tr>
      <td>Sandra</td><td>17</td><td>Agosto</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';

// Para enviar correo HTML, la cabecera Content-type debe definirse
$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Cabeceras adicionales
$cabeceras .= 'From: Recordatorio de Cumpleaños <direccion de remitente>' . "\r\n";

// Enviarlo
mail($para, $asunto, $mensaje, $cabeceras);

$ok=mail($para, $asunto, $mensaje, $cabeceras);
echo $ok?"<h1> Mail enviado</h1>":"<h1> Error al enviar el email</h1>";

?>
  #4 (permalink)  
Antiguo 15/06/2009, 05:26
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Funcion mail no envía HTML

Hola Knibal,

El código que pones está bien; incluso lo he probado y me funciona correctamente, por lo que no creo que sea un problema del código. Cuando lo envías desde el servidor online dices que desde Outlook se ve como texto plano. ¿Cómo se ve desde el resto de clientes de correo electrónico? Si se ve en HTML, lo más probable es que tengas la cuenta de Outlook para que muestre los mensajes en texto plano, en lugar de HTML.

Si en el resto de clientes se ve igual que en Outlook, es probable que el problema esté en el servidor de correo saliente. ¿Has comprobado si soporta el envío de emails en HTML; es decir, que soporte las extensiones MIME?
  #5 (permalink)  
Antiguo 15/06/2009, 05:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 37
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Funcion mail no envía HTML

La cuenta es IMAP, si veo el correo en Outlook me sale todo el html como texto plano, si lo veo por webmail, me aparece correcto como html. Todo está configurado en Outlook para que me permita enviar y recibir mensajes en HTML.

Hasta aquí todo haría pensar que es problema de Outlook.

Pero es que si ejecuto ese mismo código en el servidor local, se ve bien el html tanto en Outlook como en webmail.

Entonces no debe ser problema de Outlook, o al menos no exclusivamente de Outlook.

Sobre el servidor de correo saliente, no se exactamente cómo revisar lo que me comentas, eso de que "soporte las extensiones MIME", ¿dónde o como lo compruebo?
  #6 (permalink)  
Antiguo 15/06/2009, 09:57
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Funcion mail no envía HTML

En realidad, si el resto de clientes lo muestran en HTML, es porque el servidor soporta MIME. Hay algo que suele dar problemas y son los finales de línea. Prueba a sustituir "\r\n" por la variable $LF que te indico a continuación:

Código PHP:
$LF sprintf('%c'0x0A); 
  #7 (permalink)  
Antiguo 23/06/2009, 01:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 37
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Funcion mail no envía HTML

Nada, he probado lo que me comentas y sigue fallando. Ya no se qué mas me queda por probar.

¿Alguno tiene alguna idea nueva por favor? :\
  #8 (permalink)  
Antiguo 25/06/2009, 15:56
 
Fecha de Ingreso: septiembre-2005
Mensajes: 37
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Funcion mail no envía HTML

Siento ser pesado, pero por más vueltas que le doy no consigo solventar el problema, ¿alguien me echa una mano?
  #9 (permalink)  
Antiguo 01/07/2009, 18:05
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Funcion mail no envía HTML

evidentemente tengo el mismo problema que vos, entre a este post a ver si hallaba una solucion y lejos de encontrarla me estoy volviendo histerico ya he probado de todo
pense que el problema estaba en como declaraba el type, pero esta perfecto :(
  #10 (permalink)  
Antiguo 06/07/2009, 10:36
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Funcion mail no envía HTML

ha revivido el tema pq tengo el mismo problema y no encuentro la solucion.
Resulta que en localhost el mail me llega perfecto con los caracteres HTML pero cuando lo subo al server los mails me llegan con las etiquetas html a pesar de tener configurado el outlook para formato HTML.
Alguna idea???

Gracias
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 10:06.