2012-02-01 3 views
7

Я пытаюсь отправить почту с помощью Zend_Mail, используя следующий код:Zend_Mail с французскими символами в теле письма

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

Теперь проблема заключается в том, что $mailBody имеет французские символы. например:

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

Когда отправленная почта в таком случае рассматривается та же строка будет выглядеть так:

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

акценты были заменены знаком вопроса! Я попытался закодировать тело письма с помощью utf8_encode, но проблема все еще сохраняется.

Примечание: содержимое тела считывается из текстового файла с использованием file_get_contents.

+0

Вы гарантировали, что текстовый файл имеет правильную кодировку? Вы можете проверить его в текстовом редакторе. Выполнение этого и построение 'Zend_Mail' с опцией' UTF-8' (как предложено ниже) должно быть достаточно. – bububaba

ответ

21

Вы должны установить кодировку UTF-8 в Zend_Mail конструктору:

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

Убедитесь также, что $ mailBody содержит UTF-8 текст.

+1

+1, простой и лаконичный. – philwinkle

+1

есть ли способ установить 'UTF-8' в глобальной $ config? Нравится это: Zend_Mail :: setDefaultTransport (новый Zend_Mail_Transport_Smtp ('smtp.gmail.com', $ config)); – adamnyberg

1

Используйте:

$mail->setBodyHtml(); 

вместо:

$mail->setBodyText(); 

проблема будет короткое замыкание.

+0

На самом деле я пробовал, и это не сработало. – Songo

+1

Вы пробовали это $ mail = новый Zend_Mail ('utf-8'); –

+0

Да, я тоже это пробовал, и он все еще не работает. – Songo

Смежные вопросы