2009-09-01 22 views
22

Sto usando il sistema di posta PEAR per inviare mail autenticate. Ho bisogno di inviare mail HTML che ha alit.Era funzionante bene prima ho iniziato a utilizzare PEAR mail.Ora non sono in grado di inviare Mail HTMLcome inviare mail html usando PEAR mail

corpo del messaggio simile al seguente:

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

un tag appare come lo è l'idea mail.Any come risolvere questo ?? Pls aiutare ..

+0

Dai un'occhiata al pacchetto Mail_mime. Ti consente di includere sia la versione in html sia quella in chiaro dell'email: http://pear.php.net/manual/en/package.mail.mail-mime.example.php –

risposta

28

Se si segue questo esempio non c'è ragione per cui non dovrebbe funzionare:

<? 
     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 Affinché l'esempio precedente per lavorare bisogna Pera posta Mime Package oltre a quello Pear Mail. È possibile ottenere il pacchetto qui https://pear.php.net/package/Mail_Mime/download.

+0

Questo codice sembra invia l'e-mail come allegato ora. –

+1

per quanto riguarda la configurazione del server SMTP? Hai un link per questo? –

+1

Salve, ho letto https://pear.php.net/manual/en/package.mail.mail.send.php, c'è 'A' nelle' $ intestazioni '. Mi chiedo quale sia la differenza tra l'email del destinatario '$ recipient' nel metodo' send() 'e nella variabile' $ headers'? È necessario mettere 'A' nelle intestazioni' $'? – stenlytw

3

Si prega di notare che l'esempio pubblicato da karim79 ha un parametro di intestazione che potrebbe causare molto dolore: "Return-Path" - quando ho incluso questo parametro come nell'esempio mi impediva di aggiungere un nome da, solo un mittente indirizzo email funzionante

particolare (quando ho aggiunto un parametro di debug per vedere cosa stava succedendo) c'erano parentesi in più angolari aggiunti intorno al dal nome in modo ha cercato di trasmettere questo al server SMTP:

Da: < dal nome < nome @ domain.com > > o
Da: < "dal nome" <[email protected]> > quando ho provato a utilizzare le virgolette.
Ciò ha causato la chiusura della connessione smtp con un errore di indirizzo non valido.

Inoltre, quando si utilizza la classe mime_mail è necessario specificare il parametro "A:" nelle intestazioni o sembrerà che venga inviato agli indirizzi non riservati quando lo si riceve. Quindi sostituisci il parametro Return-Path con un parametro To e funzionerà.

12

Che aspetto hanno le intestazioni? Ecco i miei:

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

questo codice è eccellente e breve. grazie @story – aya

+2

Questo funziona brillantemente senza dover cercare librerie extra –

+1

Funziona perfettamente senza lib aggiuntive! – Mazz

Problemi correlati