2013-01-31 79 views
2

我使用SwiftMailer发送电子邮件,但我有UTF-8科目编纂的一些问题。 Swiftmailer使用QPHeaderEncoder作为默认编码电子邮件标题,safeMap看起来像一些UTF-8法文字符有问题。我使用的一个主题包含了trouvé(用法语发现)这个词,并且当主题到达用户时它显示出麻烦。有没有办法在SwiftMailer中更改头文件的编码?

我想使用类似于NativeQPContentEncoder的东西,它可用作内容编码器,但对于标题,只有Base64Quoted Printable编码器。

有没有办法解决这个问题,也许我做错了什么,所以我贴的代码,我在这里使用

$message = Swift_Message::newInstance() 

// set encoding in 8 bit 
->setEncoder(Swift_Encoding::get8BitEncoding()) 

// Give the message a subject 
->setSubject($subject) 

// Set the From address with an associative array 
->setFrom(array($from => $niceFrom)) 

// Set the To addresses with an associative array 
->setTo(array($to)) ; 
+0

我有一个消息在井号类似的问题。 – Amir

回答

2

检查你的PHP配置mbstring.func_overload选项比0以外的任何值。如果是,请将其更改为0,重新加载Web服务器并尝试再次发送消息。

mbstring.func_overloadoverrides一些字符串的PHP函数,并可能导致UTF-8的棘手的错误。

我个人通过禁用mbstring.func_overload正好解决了这个问题。

+0

对不起,这是近5年前,我不知道我是如何解决这个问题的。但我记得'mbstring.func_overload'是活跃的,所以我想这可能是一个解决方案。 – Khriz

0

首先,确保你知道你的目标字符串是如何编码。如果它不是UTF-8那么就是utf8_encode()。

此外,还要确保你setCharset( 'UTF-8')的消息。

+0

我已经完成了,所有的项目字符串都是UTF-8,我已经检查过字符集。无论如何,谢谢 – Khriz

相关问题