2009-09-01 39 views
22

Estoy usando el sistema de correo PEAR para enviar correos autenticados. Tengo que enviar correos HTML que tengan alinks. Estaba funcionando bien antes de empezar a usar el correo PEAR. Ahora no puedo enviar correos electrónicos Correos HTMLcómo enviar correos HTML utilizando correo PEAR

cuerpo del correo se ve así:

$body = <<<EOD 

Hiya $username 

You might be interested in the current 'haves' and 'wants' on example.com 

Latest Haves 
<a href="http://www.exmaple.com/product/have/64/Titan+Fast+Track+SunGlass">Titan Fast Track SunGlass</a> 

EOD; 

una etiqueta aparece como lo es en la idea mail.Any cómo solucionar esto ?? .. PLS ayudar a

+0

Eche un vistazo al paquete Mail_mime. Le permite incluir una versión html y texto claro del correo electrónico: http://pear.php.net/manual/en/package.mail.mail-mime.example.php –

Respuesta

28

Si sigue este ejemplo no hay razón por la que no debería funcionar:

<? 
     include('Mail.php'); 
     include('Mail/mime.php'); 

     // Constructing the email 
     $sender = "Leigh <[email protected]_spam.net>";        // Your name and email address 
     $recipient = "Leigh <[email protected]_spam.net>";       // The Recipients name and email address 
     $subject = "Test Email";           // Subject for the email 
     $text = 'This is a text message.';         // Text version of the email 
     $html = '<html><body><p>This is a html message</p></body></html>'; // HTML version of the email 
     $crlf = "\n"; 
     $headers = array(
         'From'   => $sender, 
         'Return-Path' => $sender, 
         'Subject'  => $subject 
         ); 

     // Creating the Mime message 
     $mime = new Mail_mime($crlf); 

     // Setting the body of the email 
     $mime->setTXTBody($text); 
     $mime->setHTMLBody($html); 

     $body = $mime->get(); 
     $headers = $mime->headers($headers); 

     // Sending the email 
     $mail =& Mail::factory('mail'); 
     $mail->send($recipient, $headers, $body); 
?> 

NOTA para que el ejemplo anterior para trabajar se necesita el correo pera Paquete Mime, además del Pear Mail. Puede obtener el paquete aquí https://pear.php.net/package/Mail_Mime/download.

+0

Este código parece envíe el correo electrónico como un archivo adjunto ahora. –

+1

¿Qué ocurre con la configuración del servidor SMTP? ¿Tiene un enlace para eso? –

+1

Hola, leo https://pear.php.net/manual/en/package.mail.mail.send.php, hay 'To' en' $ headers'. Me pregunto ¿cuál es la diferencia entre el correo electrónico del destinatario '$ recipient' en el método' send() 'y en la variable' $ headers'? ¿Es necesario poner 'To' en' $ headers'? – stenlytw

3

Tenga en cuenta que el ejemplo publicado por karim79 tiene un parámetro de cabecera que puede causarle mucha pena: "Return-Path": cuando incluí este parámetro como el ejemplo, no pude agregar un nombre, solo un remitente la dirección de correo electrónico funcionó.

concreto (cuando he añadido un parámetro de depuración para ver lo que estaba pasando) había paréntesis angulares adicionales agregados alrededor de la de nombre por lo que trató de enviar esto al servidor SMTP:

Desde: < de nombre nombre < @ dominio.com > > o
De: < "del nombre" <[email protected]> > cuando traté de usar comillas.
Esto provocó que la conexión smtp salga con un error de dirección no válida.

Además, al usar la clase mime_mail, debe especificar el parámetro "Para:" en los encabezados o se enviará a las direcciones no divulgadas cuando lo reciba. Entonces reemplace el parametro Return-Path con un param y funcionará.

12

¿Cómo son sus encabezados? Aquí están los míos:

$headers = array(
    'To' => $recipients, 
    'From' => $adminEmail, 
    'Subject' => $subject, 
    'MIME-Version' => 1, 
    'Content-type' => 'text/html;charset=iso-8859-1' 
); 
+2

este código es excelente y breve. gracias @story – aya

+2

Esto funciona de manera brillante sin tener que ir en busca de bibliotecas adicionales –

+1

¡Trabaja perfekt sin lib adicional! – Mazz

Cuestiones relacionadas