2009-09-01 5 views
22

Ich benutze PEAR-Mail-System, um authentifizierte Mails zu senden.Ich muss HTML-Mails senden, die alinks.It funktionierte gut, bevor ich begann mit PEAR mail.Now kann ich nicht senden HTML-Mails.wie HTML-Mails mit PEAR Mail senden

Mail-Text wie folgt aussieht:

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

ein Tag erscheint, wie es in der mail.Any Idee ist, wie diese zu lösen ?? Pls helfen ..

+0

Werfen Sie einen Blick auf das Paket Mail_mime. Es erlaubt Ihnen, sowohl eine HTML- als auch eine Klartext-Version der E-Mail einzuschließen: http://pear.php.net/manual/en/package.mail.mail-mime.example.php –

Antwort

28

Wenn Sie dieses Beispiel folgen gibt es keine Daher sollte es nicht funktionieren:

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

HINWEIS um für das obige Beispiel benötigt man die Birne Post zu arbeiten Mime Package zusätzlich die Pear Mail ein. Sie können das Paket hier erhalten https://pear.php.net/package/Mail_Mime/download.

+0

Dieser Code scheint zu Sende die E-Mail jetzt als Anhang. –

+1

Was ist mit der SMTP-Server-Konfiguration? Haben Sie einen Link dafür? –

+1

Hallo, ich habe https://pear.php.net/manual/en/package.mail.mail.send.php gelesen, da ist 'To' in den' $ headers'. Ich frage mich, was ist der Unterschied zwischen Empfänger-E-Mail-'$ Empfänger 'in' send() 'Methode und in' $ Headers-Variable? Ist es notwendig, 'To' in' $ headers' zu setzen? – stenlytw

3

Bitte beachten Sie, dass das Beispiel geschrieben von karim79 einen Header-Parameter, die Sie viel Kummer verursachen: „Return-Path“ - wenn ich diesen Parameter wie das Beispiel enthalten sie mir aus das Hinzufügen eines von Namen verhindert, nur einen Sender E-Mail-Adresse funktioniert.

Insbesondere (wenn ich hinzugefügt, um einen Debug-param, um zu sehen, was los war) gibt es zusätzliche spitze Klammern um die von Namen hinzugefügt, so dass es versuchte, diese an den SMTP-Server zu senden:

Von: < < von Namen namen @ domain.com > > oder
Von: < "von Name" <[email protected]> > wenn ich versuchte mit Anführungszeichen.
Dies führte zum Beenden der SMTP-Verbindung mit einem Fehler der ungültigen Adresse.

Auch bei Verwendung der mime_mail-Klasse müssen Sie den Parameter "To:" in den Kopfzeilen angeben, oder es wird scheinbar an unbekannte Adressen gesendet, wenn Sie sie erhalten. Ersetzen Sie also den Return-Path-Parameter durch einen To-Parameter und es wird funktionieren.

12

Wie sehen Ihre Header aus? Hier sind meine:

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

dieser Code ist ausgezeichnet und kurz. Danke @story – aya

+2

Dies funktioniert hervorragend, ohne dass man nach zusätzlichen Bibliotheken suchen muss. –

+1

Funktioniert perfekt ohne zusätzliche lib! – Mazz