Zend_Mail с французскими символами в теле письма - PullRequest
9 голосов
/ 01 февраля 2012

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

 function sendMail() {

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

    $mail = new Zend_Mail(); 

    $mail->setBodyText($mailBody);

    $mail->setFrom('example@host.com', 'The Company Name');
    $mail->addTo('example@host.com', 'Recipient Name');
    $mail->setSubject('Mail subject');    
    $mail->send(new Zend_Mail_Transport_Smtp('example@server.com', $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.

Ответы [ 2 ]

23 голосов
/ 01 февраля 2012

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

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

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

1 голос
/ 01 февраля 2012

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

$mail->setBodyHtml();

вместо:

$mail->setBodyText();

проблема будет устранена.

...