Zend_Mail与邮件正文中的法语字符

时间:2012-02-01 10:09:09

标签: php zend-framework encoding 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('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 个答案:

答案 0 :(得分:23)

您必须在Zend_Mail构造函数中将编码设置为UTF-8:

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

还要确保$ mailBody包含UTF-8文本。

答案 1 :(得分:1)

使用:

$mail->setBodyHtml();

而不是:

$mail->setBodyText();

问题会很短暂。