2009-09-01 10 views
22

Używam systemu pocztowego PEAR do wysyłania uwierzytelnionych wiadomości. Muszę wysyłać wiadomości HTML, które mają alinks.It działało dobrze, zanim zacząłem używać poczty PEAR.Teraz nie jestem w stanie wysłać Wiadomości HTML.jak wysyłać maile HTML przy użyciu poczty PEAR

ciało poczty wygląda następująco:

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

tag pojawia się, jak to jest w idei mail.Any jak rozwiązać to ?? Pls pomóc ..

+0

Spójrz na pakiet Mail_mime. Pozwala na dołączenie wersji e-mailowej html- i tekstowej: http://pear.php.net/manual/en/package.mail.mail-mime.example.php –

Odpowiedz

28

Jeśli zastosujemy ten przykład nie ma przyczyną tego, że nie powinno działać:

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

UWAGA aby powyższym przykładzie do pracy trzeba gruszki Poczta Pakiet Mime oprócz Pear Maila. Możesz pobrać pakiet tutaj https://pear.php.net/package/Mail_Mime/download.

+0

Ten kod wydaje się być wyślij teraz wiadomość e-mail jako załącznik. –

+1

co z konfiguracją serwera SMTP?, Czy masz do tego link? –

+1

Witam, czytam https://pear.php.net/manual/en/package.mail.mail.send.php, w '$ headers' jest' To'. Zastanawiam się, jaka jest różnica między adresem e-mail odbiorcy "$ recipient" w metodzie "send()" i zmiennej '$ headers'? Czy konieczne jest umieszczenie 'To' w' $ headers'? – stenlytw

3

Proszę zauważyć, że przykład zamieszczony przez karim79 ma parametr nagłówka, który może powodować wiele smutku: "Return-Path" - gdy zawarłem ten parametr, jak na przykład, uniemożliwił mi dodanie nazwy, tylko nadawca Adres e-mail działał.

szczególności (gdy dodałem param debugowania, aby zobaczyć, co się dzieje) były dodatkowe nawiasy dodane wokół z nazwy więc próbowała wysłać to do serwera SMTP:

Od: < od nazwy < nazwą @ domain.com > > lub
od: < "z nazwą" <[email protected]> > gdy próbowałem za pomocą cytatów.
Spowoduje to zamknięcie połączenia smtp z błędem nieprawidłowego adresu.

Również przy korzystaniu z klasy mime_mail należy określić parametr "Do:" w nagłówkach lub będzie on wysyłany na niejawne adresy w momencie jego otrzymania. Zastąp więc parametr Return-Path parametrem To i to zadziała.

12

Jak wyglądają nagłówki? Oto moje:

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

ten kod jest doskonały i krótki. dzięki @story – aya

+2

Działa to doskonale bez konieczności szukania dodatkowych bibliotek –

+1

Działa perfekt bez dodatkowej biblioteki! – Mazz

Powiązane problemy