2012-02-01 8 views
7

Sto cercando di inviare una mail utilizzando Zend_Mail utilizzando il seguente codice:Zend_Mail con caratteri francesi nel corpo del messaggio

function sendMail() { 

    $config = array('auth' => 'login', 
       'username' => 'UserName', 
       'password' => 'Password', 
       'port'=>'27');  

    $mail = new Zend_Mail(); 

    $mail->setBodyText($mailBody); 

    $mail->setFrom('[email protected]', 'The Company Name'); 
    $mail->addTo('[email protected]', 'Recipient Name'); 
    $mail->setSubject('Mail subject');  
    $mail->send(new Zend_Mail_Transport_Smtp('[email protected]', $config)); 
} 

Ora il problema è che $mailBody ha caratteri francesi. per esempio:

Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande 

Quando la mail inviata viene poi visto la stessa linea appare in questo modo:

Merci d'avoir pass? commande avec Lovre. Voici le r?capitulatif de votre commande 

Gli accenti sono stati sostituiti da un punto interrogativo! Ho provato a codificare il corpo della mail usando utf8_encode, ma il problema persisteva ancora.

Nota: il contenuto del corpo viene letto da un file di testo utilizzando file_get_contents.

+0

Ti sei assicurato che il file di testo abbia la codifica corretta? Puoi controllarlo in un editor di testo. Farlo e costruire 'Zend_Mail' con l'opzione' UTF-8' (come suggerito sotto) dovrebbe essere sufficiente. – bububaba

risposta

21

È necessario impostare la codifica UTF-8 nel costruttore Zend_Mail:

$mail = new Zend_Mail('UTF-8'); 

Assicurarsi anche che $ Corpo Email contiene testo UTF-8.

+1

+1, semplice e conciso. – philwinkle

+1

c'è un modo per impostare 'UTF-8' nella configurazione globale $? In questo modo: Zend_Mail :: setDefaultTransport (nuovo Zend_Mail_Transport_Smtp ('smtp.gmail.com', $ config)); – adamnyberg

1

Utilizzare:

$mail->setBodyHtml(); 

invece di:

$mail->setBodyText(); 

il problema sarà breve fuori.

+0

In realtà l'ho provato e non ha funzionato. – Songo

+1

L'hai provato $ mail = new Zend_Mail ('utf-8'); –

+0

sì, l'ho provato anche io e non funziona ancora. – Songo

Problemi correlati