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 在邮件正文中带有法语字符的主要内容,如果未能解决你的问题,请参考以下文章

使用 Zend_Mail 时添加 PDF 附件

带有法语特殊字符 (è d') 的无效 XPath

发送电子邮件时是不是需要换行?

Outlook 无法在我的 mailto 字符串中接受法语重音字符?

如何转换引用打印字符串

zend_mail 电子邮件在第 4 次尝试中被标记为垃圾邮件