Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No se muestra el cuerpo del mensaje phpmailer

Estas en el tema de No se muestra el cuerpo del mensaje phpmailer en el foro de PHP en Foros del Web. Hola, sigo con Phpmailer, he leido también muchos post de este foro, pero he encontrado un problema que no sé solucionar. El caso es que ...
  #1 (permalink)  
Antiguo 13/10/2014, 14:46
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
No se muestra el cuerpo del mensaje phpmailer

Hola,
sigo con Phpmailer, he leido también muchos post de este foro, pero he encontrado un problema que no sé solucionar.

El caso es que se me envía el email bien, pero con el problema de que el cuerpo del mensaje sale vacío.

Archivo registro_usuario.html
Código HTML:
Ver original
  1. <!doctype html>
  2. <meta charset="utf-8">
  3. <title>REGISTRO USUARIOS</title>
  4. </head>
  5.  
  6. esto es una prueba del registro de usuarios si se envia el email.
  7. <a href="www.webrutas.com/gestion/gestion_usuarios.php?accion=confirmar&token=token">este va a ser el enlace</a>
  8. </body>
  9. </html>

He intentado tanto con el mensaje en el body como el msgHTML
Código PHP:
//cuerpo del mensaje definido en html y lo inserto
    
$mensaje file_get_contents('../emails/registro_usuario.html');
    
$mail->Body $mensaje;
    
$mail->IsHTML(true); 
Código PHP:
$mensaje file_get_contents('../emails/registro_usuario.html');
$mail->msgHTML($mensaje); 
pero en ambas me sale vacío. Sin embargo, utilizando la funcion mail() sí que me lo envía.

Código PHP:
$mensaje file_get_contents('../emails/registro_usuario.html');
mail($destinatario$asunto$mensaje$cabecera); 
aquí si llega el cuerpo del mensaje.
Alguno sabría ayudarme?
  #2 (permalink)  
Antiguo 14/10/2014, 02:13
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: No se muestra el cuerpo del mensaje phpmailer

Prueba declarando primero que sea HTML y luego asignando el cuerpo del mensaje por si acaso. Al menos en el ejemplo oficial de GitHub lo hacen así. Si no, síguelo poniendo tus datos a ver si te acaba funcionando:

https://github.com/Synchro/PHPMailer
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 14/10/2014, 02:31
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: No se muestra el cuerpo del mensaje phpmailer

https://github.com/Synchro/PHPMailer...ples/mail.phps

He mirado este enlace y aparece lo siguiente:
Código PHP:
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); 
en ningún lado he visto que declare algo como HTML previo. Dónde lo has visto exáctamente? yo lo que no he incluido es el dirname porque no tengo ninguna imagen
  #4 (permalink)  
Antiguo 14/10/2014, 02:38
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: No se muestra el cuerpo del mensaje phpmailer

Sí, en la misma página que te he puesto, si bajas para abajo tienes una sección que pone "A simple example". El ejemplo que ponen es:

Código PHP:
Ver original
  1. require 'PHPMailerAutoload.php';
  2.  
  3. $mail = new PHPMailer;
  4.  
  5. //$mail->SMTPDebug = 3;                               // Enable verbose debug output
  6.  
  7. $mail->isSMTP();                                      // Set mailer to use SMTP
  8. $mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
  9. $mail->SMTPAuth = true;                               // Enable SMTP authentication
  10. $mail->Username = '[email protected]';                 // SMTP username
  11. $mail->Password = 'secret';                           // SMTP password
  12. $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
  13. $mail->Port = 587;                                    // TCP port to connect to
  14.  
  15. $mail->From = '[email protected]';
  16. $mail->FromName = 'Mailer';
  17. $mail->addAddress('[email protected]', 'Joe User');     // Add a recipient
  18. $mail->addAddress('[email protected]');               // Name is optional
  19. $mail->addReplyTo('[email protected]', 'Information');
  20. $mail->addCC('[email protected]');
  21. $mail->addBCC('[email protected]');
  22.  
  23. $mail->WordWrap = 50;                                 // Set word wrap to 50 characters
  24. $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
  25. $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
  26. $mail->isHTML(true);                                  // Set email format to HTML
  27.  
  28. $mail->Subject = 'Here is the subject';
  29. $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
  30. $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
  31.  
  32. if(!$mail->send()) {
  33.     echo 'Message could not be sent.';
  34.     echo 'Mailer Error: ' . $mail->ErrorInfo;
  35. } else {
  36.     echo 'Message has been sent';
  37. }

Y ahí es donde he visto:

Código PHP:
Ver original
  1. $mail->isHTML(true);  // Set email format to HTML
  2.  
  3. $mail->Subject = 'Here is the subject';
  4. $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #5 (permalink)  
Antiguo 14/10/2014, 02:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: No se muestra el cuerpo del mensaje phpmailer

Nada lo he probado y sigue apareciendo en blanco... en realidad eso ya lo había probado, aunque le he cambiado el orden como decías y nada... de todas maneras el msgHTML() se supone que pone la propiedad a true directamente. Os dejo todo el código por si alguien ve algo...
nota: si pongo un echo $mail->msgHTML($mensaje) me escribe el mensaje bien en la pantalla incluso con los cambios de letra y demás.

Código PHP:
Ver original
  1. $mail = new PHPMailer();
  2.        
  3.             //cuerpo del mensaje definido en html y lo inserto
  4.             $msg = file_get_contents('../emails/registro_usuario.html');
  5.             $mensaje = eregi_replace("[\]",'',$msg);
  6.  
  7.             $mail->msgHTML($mensaje);
  8.  
  9.      
  10.            
  11.             //defino el email y nombre del remitente del mensaje
  12.             $mail->SetFrom('[email protected]', 'WebRutas Admin');
  13.                        
  14.             //Defino la dirección de correo a la que se envía el mensaje
  15.             $mail->AddAddress($email, $nombre);
  16.             //Añado un asunto al mensaje
  17.             $mail->Subject = "Bienvenido a WebRutas";
  18.             //Puedo definir un cuerpo alternativo del mensaje, que contenga solo texto
  19.             $mail->AltBody = "Tiene que confirmar su cuenta en Webrutas";          
  20.             //para mostrar correctamente acentos
  21.             $mail->CharSet = "UTF*8";
  22.             $mail->Encoding = "quoted*printable";
  23.  
  24.             //e1nvio el mensaje
  25.             if(!$mail->Send()) {
  26.             echo "Error al enviar el mensaje: " . $mail*>ErrorInfo;
  27.             } else {
  28.             echo "Mensaje enviado!!";
  29.             }


puede ser por el charset y el encoding?=??
  #6 (permalink)  
Antiguo 14/10/2014, 02:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: No se muestra el cuerpo del mensaje phpmailer

vale el problema era por el charset y el encoding

Etiquetas: cuerpo, html, mensaje, muestra, phpmailer, registro, usuarios
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:53.