2009-09-01 8 views
22

J'utilise le système de messagerie PEAR pour envoyer des mails authentifiés.J'ai besoin d'envoyer des mails HTML qui a alinks.It fonctionnait bien avant que je commence à utiliser PEAR mail.Maintenant je ne suis pas en mesure d'envoyer Mails HTML.comment envoyer des messages html en utilisant PEAR mail

corps du message ressemble à ceci:

$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; 

une balise apparaît comme dans l'idée mail.Any comment résoudre ce problème ?? .. Pls aider

+0

Jetez un coup d'oeil au paquet Mail_mime. Il vous permet d'inclure à la fois une version HTML et en clair de l'e-mail: http://pear.php.net/manual/en/package.mail.mail-mime.example.php –

Répondre

28

Si vous suivez cet exemple, il n'y a pas raison pour laquelle il ne devrait pas fonctionner:

<? 
     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); 
?> 

NOTE pour l'exemple ci-dessus pour travailler il faut la poire Courrier Paquet mime en plus de la poire Mail. Vous pouvez obtenir le paquet ici https://pear.php.net/package/Mail_Mime/download.

+0

Ce code semble envoyez l'e-mail en pièce jointe maintenant. –

+1

qu'en est-il de la configuration du serveur SMTP?, Avez-vous un lien pour cela? –

+1

Salut, je lis https://pear.php.net/manual/en/package.mail.mail.send.php, il y a 'To' dans les' $ headers'. Je me demande quelle est la différence entre l'email du destinataire '$ recipient' dans la méthode' send() 'et la variable' $ headers'? Est-il nécessaire de mettre 'To' dans les' $ headers'? – stenlytw

3

S'il vous plaît noter que l'exemple affiché par karim79 a un paramètre d'en-tête qui peut vous causer beaucoup de chagrin: « Return-Path » - quand j'inclus ce paramètre comme l'exemple, il m'a empêché d'ajouter un de nom, seulement un expéditeur adresse e-mail a travaillé.

Plus précisément (quand j'ai ajouté un param de débogage pour voir ce qui se passait) il y avait des crochets supplémentaires ajoutés autour du de nom il a essayé de l'envoyer au serveur smtp:

De: < du nom Nom < @ domain.com > > ou
De: < "de nom" <[email protected]> > lorsque j'ai essayé d'utiliser des guillemets.
Cela a provoqué la fermeture de la connexion SMTP avec une erreur d'adresse non valide.

De même, lorsque vous utilisez la classe mime_mail, vous devez spécifier le paramètre "To:" dans les en-têtes ou il semble être envoyé à des adresses non divulguées lorsque vous le recevez. Remplacez donc le paramètre Return-Path par un paramètre To et cela fonctionnera.

12

À quoi ressemblent vos en-têtes? Voici le mien:

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

ce code est excellent et bref. merci @story – aya

+2

Cela fonctionne brillamment sans avoir à aller chercher des bibliothèques supplémentaires –

+1

Fonctionne perfekt sans la librairie supplémentaire! – Mazz