Foros del Web » Programando para Internet » PHP »

Problema con mail() en HTML

Estas en el tema de Problema con mail() en HTML en el foro de PHP en Foros del Web. Buenas tardes, estoy intentando realizar un envío de emails HTML con la función mail(). El problema es que parece que no me acepta los headers, ...
  #1 (permalink)  
Antiguo 27/04/2011, 09:54
 
Fecha de Ingreso: diciembre-2009
Mensajes: 56
Antigüedad: 15 años
Puntos: 0
Problema con mail() en HTML

Buenas tardes, estoy intentando realizar un envío de emails HTML con la función mail(). El problema es que parece que no me acepta los headers, cuando se los pongo no envía el correo, pero quitándolos sí. El código es copiado de otra página que hice y si que funciona. Podría ser cosa del servidor? os dejo el código.

Código PHP:
Ver original
  1. $subject = "prueba";
  2. $contenido = "contenido en HTML";
  3. $cabeceras  = 'MIME-Version: 1.0' . "\r\n";
  4.     $cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  5.     $cabeceras .= 'To: $cliente <$email>' . "\r\n";
  6.     $cabeceras .= 'From: Recordatorio <[email protected]>' . "\r\n";
  7.     mail($to,$subject,$contenido,$cabeceras);

Gracias.
  #2 (permalink)  
Antiguo 27/04/2011, 11:16
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Problema con mail() en HTML

A simple vista no veo mal el código. ¿Has verificado si te manda algún error?.
Aunque te recomendaría usar las librerías de phpmailer, que son muy versátiles.
Por cierto, no se porqué tantas personas concatenan cadenas así:
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
cuando se puede hacer así:
$cabeceras = "MIME-Version: 1.0 \r\n";

Y ahora que lo pienso, quizá ese sea el problema en la linea
$cabeceras .= 'To: $cliente <$email>' . "\r\n";
que yo la pondría así:
$cabeceras .= "To: $cliente <$email>\r\n";
  #3 (permalink)  
Antiguo 28/04/2011, 01:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 56
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con mail() en HTML

Cita:
Por cierto, no se porqué tantas personas concatenan cadenas así:
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
cuando se puede hacer así:
$cabeceras = "MIME-Version: 1.0 \r\n";
Así es como lo explican los ejemplos de php.net :)

De todas formas sigue sin irme de lo forma que me has indicado, podría ser algo del servidor? gracias.
  #4 (permalink)  
Antiguo 28/04/2011, 02:01
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 9 meses
Puntos: 1826
Respuesta: Problema con mail() en HTML

No repitas $cabeceras en cada renglón:
Solo declara una vez.

Código PHP:
$cabeceras "Content-type: text/html; charset=iso-8859-1 \r\n"
    
."MIME-Version: 1.0 \r\n"
    
."From: $Nombre <$Correo> \r\n"
    
."Reply-To: $Correo \r\n"
    
."Return-path: $Correo \r\n"
    
."Bcc: $OtroCorreo \r\n"
    
."X-Mailer: PhpForm"
Así me ha funcionado bien, incluso con el X-Mailer baja el rating del spam.
  #5 (permalink)  
Antiguo 28/04/2011, 02:39
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Problema con mail() en HTML

esto es li mismo que agregar .= ?
Código PHP:

$cabeceras 
"Content-type: text/html; charset=iso-8859-1 \r\n"
    
."MIME-Version: 1.0 \r\n"
    
."From: $Nombre <$Correo> \r\n"
    
."Reply-To: $Correo \r\n"
    
."Return-path: $Correo \r\n"
    
."Bcc: $OtroCorreo \r\n"
    
."X-Mailer: PhpForm"
se ve muy bien si es asi , y ahora que entraron en este tema esto sirve para enviar imagenes por email y cosas asi ¿no?
  #6 (permalink)  
Antiguo 28/04/2011, 03:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 56
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con mail() en HTML

Esto es lo que tengo actualmente, no si si habrá algún problema con el contenido html, si el servidor no deja enviar emails con HTML o que... pero en el mail(), si le quito las cabeceras envía perfectamente, pero en texto plano. ¿Alguna idea? De todas formas, conoceis alguna librería de envío de emails con HTML que no sea htmlMimeMail?

Código PHP:
Ver original
  1. $from = "prueba.com <[email protected]>";
  2. $to = $cliente." <".$email.">";
  3. echo "<div style='display:none;'>";
  4. require_once("albaran.php");
  5. $contenido = ob_get_contents();
  6. echo "</div>";
  7. $cabeceras = "Content-type: text/html; charset=iso-8859-1 \r\n"
  8.                ."MIME-Version: 1.0 \r\n"
  9.                ."To: $cliente <$email> \r\n"
  10.                ."From: prueba <[email protected]> \r\n";
  11. mail($to,$subject,$contenido,$cabeceras);

Última edición por dannytm; 28/04/2011 a las 03:47
  #7 (permalink)  
Antiguo 28/04/2011, 11:18
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Problema con mail() en HTML

Otro apunte: no sería necesario hacer
$cabeceras = "Content-type: text/html; charset=iso-8859-1 \r\n"
."MIME-Version: 1.0 \r\n"
."From: $Nombre <$Correo> \r\n"
."Reply-To: $Correo \r\n"
."Return-path: $Correo \r\n"
."Bcc: $OtroCorreo \r\n"
."X-Mailer: PhpForm";

Pues puede quedar sólo así:

$cabeceras = "Content-type: text/html; charset=iso-8859-1
MIME-Version: 1.0
From: $Nombre <$Correo>
Reply-To: $Correo
Return-path: $Correo
Bcc: $OtroCorreo
X-Mailer: PhpForm";

Los "\r\n" irían implícitos en el salto de línea, y mientras no cierres la comilla (") no necesitas unir con el "."

Por otra parte, phpmailer es una excelente librería de uso gratuito, muy completa y versátil.

Etiquetas: 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:40.