Zend_Mail 在邮件正文中带有法语字符
Posted
技术标签:
【中文标题】Zend_Mail 在邮件正文中带有法语字符【英文标题】:Zend_Mail with french characters in mail body 【发布时间】:2012-02-24 00:38:45 【问题描述】:我正在尝试使用以下代码使用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
从文本文件中读取的。
【问题讨论】:
您是否确保文本文件具有正确的编码?您可以在文本编辑器中检查它。这样做并使用UTF-8
选项(如下所示)构造Zend_Mail
就足够了。
【参考方案1】:
您必须在 Zend_Mail 构造函数中将编码设置为 UTF-8:
$mail = new Zend_Mail('UTF-8');
还要确保 $mailBody 包含 UTF-8 文本。
【讨论】:
有没有办法在全局 $config 中设置“UTF-8”?像这样: Zend_Mail::setDefaultTransport(new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config));【参考方案2】:使用:
$mail->setBodyhtml();
而不是:
$mail->setBodyText();
问题会很短。
【讨论】:
campaignmonitor.com/blog/post/3154/…查看此链接。以上是关于Zend_Mail 在邮件正文中带有法语字符的主要内容,如果未能解决你的问题,请参考以下文章