【问题标题】:Is there a way to change the encoding of the headers in SwiftMailer?有没有办法改变 SwiftMailer 中标头的编码?
【发布时间】:2013-01-31 15:26:46
【问题描述】:

我正在使用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)) ;

【问题讨论】:

  • 我在消息中有类似的问题。

标签: php symfony swiftmailer


【解决方案1】:

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

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

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

【讨论】:

  • 抱歉,差不多是 5 年前的事了,我不知道我是如何解决这个问题的。但我记得mbstring.func_overload 是活跃的,所以我想这可能是一个解决方案。
【解决方案2】:

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

另外,请确保您 setCharset('utf-8') 您的消息。

【讨论】:

  • 我已经这样做了,所有项目字符串都是 UTF-8 并且我已经检查了字符集。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多