有没有办法在SwiftMailer中更改标头的编码?

时间:2013-01-31 15:26:46

标签: php symfony swiftmailer

我正在使用SwiftMailer发送电子邮件,但我对UTF-8主题有一些编码问题。 Swiftmailer使用QPHeaderEncoder作为默认编码电子邮件标头,而safeMap看起来有些UTF-8个法语字符存在问题。我使用的一个主题包含单词trouvé(在法语中找到),当主题到达用户时它显示trouv。

我想使用与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)) ;

2 个答案:

答案 0 :(得分:2)

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

mbstring.func_overload overrides一些字符​​串PHP函数,可能会导致UTF-8出现棘手的错误。

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

答案 1 :(得分:0)

首先,确保您知道主题字符串是如何编码的。如果它不是UTF-8那么utf8_encode()吧。

另外,请确保你将消息设置为Charset('utf-8')。