我正在使用SwiftMailer
发送电子邮件,但我对UTF-8
主题有一些编码问题。 Swiftmailer使用QPHeaderEncoder
作为默认编码电子邮件标头,而safeMap看起来有些UTF-8
个法语字符存在问题。我使用的一个主题包含单词trouvé(在法语中找到),当主题到达用户时它显示trouv。
我想使用与NativeQPContentEncoder
类似的内容编码器,但标题只有Base64
和Quoted 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 :(得分: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')。