Foros del Web » Programando para Internet » PHP »

Clase PHPMailer y envio de boletin en html

Estas en el tema de Clase PHPMailer y envio de boletin en html en el foro de PHP en Foros del Web. Hola, después volverme loca buscado una solución y rastrear los foros y no encontrar nada para solucionar mi problema os lo cuelgo para ver si ...
  #1 (permalink)  
Antiguo 29/10/2004, 12:23
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Clase PHPMailer y envio de boletin en html

Hola, después volverme loca buscado una solución y rastrear los foros y no encontrar nada para solucionar mi problema os lo cuelgo para ver si me podéis echar una mano.

Tengo un boletín en formato html para enviar a gente que extraigo de mi base datos.

El boletín tiene un codigo como el siguiente (lo corto porque es muy largo) que se visualiza perfectamente en explorer, netscape y al enviarlo como texto adjunto desde el outlook.

Código HTML:
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://www.metropolislibros.com/css/boletin.css"> 
<base target="_blank">
</head>
<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>
<div align="center">
<table width="790" height="110" cellspacing="0" cellpadding="0" border="0" background="http://www.metropolislibros.com/images/logogranate.gif">
<tr><td width="110"></td><td align=middle><font face="verdana,arial,helvetica" size="4" color="white" valing="center">Novedades de la Primera quincena de Octubre</td>
</tr>
<tr><td colspan="2" align=right><font face="verdana,arial,helvetica" size="1" color="white">Viernes 29 de Octubre de 2004</font></td>
</tr>
</table>

<table width="780" cellspacing="0" cellpadding="2" border="0">
<tr>
    <td width="95%" valign="top">


<table aling="center">
<tr><td colspan="5"><font face="verdana,arial,helvetica" size="2"></font></td></tr>
<tr><td colspan="5"><font face="verdana,arial,helvetica" size="2">Vamso a ver cómo sale</font></td></tr>
<tr><td colspan="5" align="middle" bgColor="#0B5B9F"><font face="verdana,arial,helvetica" size="2" color="ffffff">LIBROS</font></td></tr><tr><td rowspan="4"><center><img src="http://www.metropolislibros.com/portadas/9920000000262.jpg" alt="NOSFERATU 46 -MARC RECHA AL DESNUDO-" height="120"></center></td><td colspan="4" align="middle" bgColor="#A4A684" ><font face="verdana,arial,helvetica" color="#ffffff" size="2"><span class=v>NOSFERATU 46 -MARC RECHA AL DESNUDO-</span></font></td></tr><tr><td colspan="2"><font face="verdana,arial,helvetica" size="1">JUNIO 2004</td><td><font face="verdana,arial,helvetica" size="1">66 Pag.</td><td><font face="verdana,arial,helvetica" size="1">4.5 € </td></tr><tr><td colspan="4"><font face="verdana,arial,helvetica" size="1">Nuevo número de la prestigiosa revista NOSFERATU dedicada en esta ocasión a Marc Recha, en la cual varios expertos analizan su obra. Contiene una entrevista con el director y su filmografía incluyendo sus primeros cortometrajes.</td></tr><tr><td colspan="2"><font face="verdana,arial,helvetica" size="1"><a href=http://www.metropolislibros.com/index2.php?case=f&id=9920000000262>Mas información</a></td><td colspan="2"><font face="verdana,arial,helvetica" size="1"><a class=boton href=http://www.metropolislibros.com/compras/compra.php?&codigo=9920000000262><font face="verdana,arial,helvetica" size="1">Compra</a></font></td></tr><tr><td colspan="4"></td></tr><tr><td colspan="5"><p class="z">DVD</p></td></tr><tr><td rowspan="4"><center><img src="http://www.metropolislibros.com/portadas/8420266999832.jpg" alt="HACE UN MILLON DE AÑOS-DVD-" height="120"></center></td><td colspan="4"><p class=v>HACE UN MILLON DE AÑOS-DVD-</p></td></tr><tr><td colspan="2">CHAFFEY, DON</td><td></td><td>18 € </td></tr><tr><td colspan="4">Edición restaurada de este clásico de la ciencia-ficción que contiene, además de la propia película, una comparación de la restauración, el trailer original de cine y subtitulos en múltiples idiomas.</td></tr><tr><td colspan="2"><a href=http://www.metropolislibros.com/index2.php?case=f&id=8420266999832>Mas información</a></td><td colspan="2"><a class=boton href=http://www.metropolislibros.com/compras/compra.php?&codigo=8420266999832>Compra</a></td></tr></table></td>
    <td width="3" valign="top">
	</td>
    <td width="5%" valign="top">
	
	<table width="140" cellspacing="1" cellpadding="2" border="0" bgcolor="FDF5CE">
	<tr>
	    <td align="center" bgcolor="CC6600"><font face="Verdana,Arial" size="4" color="white">OFERTAS</font></td>
	</tr>

<tr><td><font face="Verdana,Arial" size="2" color="#CC6600"><span class="g">OFERTA AJEDREZ STAR WARS EPISODIO II</span></font></td></tr><tr><td><font face="Verdana,Arial" size="1">Rebajamos el stock de este maravilloso ajedrez que reproduce...<a href=http://www.metropolislibros.com/index2.php?case=o> Más</a></font></td></tr><tr><td><font face="Verdana,Arial" size="2" color="#CC6600"><span class="g">VIDEO A MITAD DE PRECIO</span></font></td></tr><tr><td><font face="Verdana,Arial" size="1">Todo el stock de vídeo que tenemos en la librería lo hemos rebajado...<a href=http://www.metropolislibros.com/index2.php?case=o> Más</a></font></td></tr><tr><td><font face="Verdana,Arial" size="2" color="#CC6600"><span class="g">COMPRA 5 NOSFERATUS Y PAGA SOLO 2</span></font></td></tr><tr><td><font face="Verdana,Arial" size="1">Por la compra de tres números de la revista Nosferatu te regalamos...<a href=http://www.metropolislibros.com/index2.php?case=o> Más</a></font></td></tr></table><br>
</td>
</tr>
</table>
</div>
</body>
</html> 
Este boletin lo envio mediate la clase PHPMailer y el cuerpo del mensaje lo introduzco mediante un formulario que llama a enviar.php
Formulario.htm
Código HTML:
<p>Para mandar un mensaje.</p>
<form method="post" action="enviar.php">
Asunto:<input type="text" name="asunto" class="cajon"><br>
Mensaje:<br><textarea name="mensaje" cols="30" rows="5" class="cajon"></textarea><br>
Contraseña:
<input type="password" name="contrasena_enviar" class="cajon"><br>
<input type="submit" name="enviar_enviar" value="Enviar" class="boton"></form> 
Y por ultimo el fichero enviar.php
Código PHP:
<?include("config.php");
  require 
"class.phpmailer.php";
  
$contrasena_enviar=$_POST[contrasena_enviar];
  
$mensaje=$_POST["mensaje"];
  
$asunto=$_POST["asunto"];

      
$mail = new phpmailer();
      
$mail->PluginDir "";                          
      
$mail->Mailer "smtp";
      
$mail->Host "localhost"
      
$mail->SMTPAuth false;
      
$mail->From "[email protected]";
      
$mail->FromName "Yo";      
      
$mail->Subject $asunto;
      
$mail->Body $mensaje;

      
//Definimos AltBody por si el destinatario del correo no admite 
      //email con formato html
      
$mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto"
      
    
$mail->Timeout=10;

    if(
$contrasena_enviar==$dbpass)
        {
        
$resp2 mysql_query("select * from lista");
        while(
$datos2 mysql_fetch_array($resp2))
        {
            
            
$mail_listado=$datos2[mail];
            echo 
$mail_listado;
            
$mail->AddAddress($mail_listado);
            
$exito $mail->Send();
            
$intentos=1
               while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
               
sleep(5);
                    
//echo $mail->ErrorInfo;
                    
$exito $mail->Send();
                   
$intentos=$intentos+1;                
           }

    
        if(!
$exito)
                {
               echo 
"Problemas enviando correo electrónico a ".$valor;
               echo 
"<br/>".$mail->ErrorInfo;    
                }
        else
            {
           
//Mostramos un mensaje indicando las direccion de 
           //destino 
           
$mensaje="<p>Has enviado un mensaje a:<br/>";
           
$mensaje.=$valor." ";
           echo 
$mensaje;

            }
    
// Borro las direcciones de destino establecidas anteriormente
        
$mail->ClearAddresses();
                       
        }
        }
        else {
        echo 
"La contraseña no es válida";
        } 
?>
Lo que ocurre es que recibo el e-mail sin respetar las tablas ni ninguno de los estilos, los colores cambiados y hecho un desastre, vamos que no se parece nada a lo que yo quiero enviar. no tengo ni idea de donde está el error después de hacer multitud de cambios. A ver si me podéis echar una mano. Gracias.
  #2 (permalink)  
Antiguo 31/10/2004, 10:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Preguntas:

* Con que cliente de correo lees tu e-mail HTML que has generado?
* Ves tu e-mail en HTML? o ves el código (esto es para ver si tu e-mail lo generas en HTML . .por qué no veo:

$mail->IsHTML(true);

Aunque algo diche la documentación que no sería necesario usarlo .. mejor usalo:
http://phpmailer.sourceforge.net/tutorial.html#4

* Las imagenes las ves? .. Te lo comento por qué haces refencia a tus CSS y a tus imagenes de forma externa a tu e-mail .. linkeados hacia tu página web. Hay muchos clientes de correo que solicictan confirmación para ejecutar llamadas a cosas externas al e-mail (como esos CSS vinculados a tu web, las imagenes .. y demás). Si no permites eso, tus css no se leen .. así que no se aplicarán tus estilos a tu HTML.

Un saludo,
  #3 (permalink)  
Antiguo 31/10/2004, 17:08
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias Cluster por tus sugerencias, pero hoy mismo he descubierto el error: resulta que yo generaba el boletín mediante un php que hace las consultas a mi base de datos, el html se generaba bien pero al copiarlo y enviarlo a la pagina que contiene el PHPMailer me escapaba todas las comillas, es decir colocaba delante de cada comilla una barra oblicua de esta manera <tr><td colspan=\"5\"><p class=\"z\"></p></td></tr> con lo cual el navegador no entendía nada.

Solución:en el php que genera el boletín eliminar todas las comillas y de esa manera el codigo llega limpio y completo.

El boletin se ve perfectamente bien en todos los navegadores, las imágenes y las llamadas externas se ejecutan perfectamente, pero aun así pondré $mail->IsHTML(true); por seguridad como tu dices.

Muchas gracias por todo
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 09:10.