如何处理电子邮件主题中的特殊字符?

时间:2014-01-30 16:37:25

标签: email symfony swiftmailer subject

我在Symfony2 webapp中使用Swiftmailer。

// Subject and body dynamically come from database
$subject  = "This is my subject with an apostroph ' in it.";
$bodytext = "Test text, also with an ' apostrophe in it.";

$message = \Swift_Message::newInstance()
             ->setSubject($subject)
             ->setFrom('me@mail.com')
             ->setTo('you@mail.com');

$message->setBody($bodytext);

$this->get('mailer')->send($message);

现在有一个特殊的字符,例如在我的主题中的撇号('),电子邮件在我的电子邮件客户端中有一个奇怪的主题行:

  

这是我的主题,其中有一个叛逆者'

有趣的是:正文显示正确,它只是错误格式化的主题。

现在我怎样才能处理这样的特殊字符 - 更好的是,在传递处理特殊字符的主题之前,我可以调用一个函数吗?

2 个答案:

答案 0 :(得分:1)

尝试使用htmlentities PHP函数来逃避主题:

$subject  = htmlentities("This is my subject with an apostroph ' in it.");

答案 1 :(得分:0)

对不起,我知道这很晚,但是它可能会帮助仍然有这些类似问题的任何人。 我在SwiftMailer 6.2上遇到了撇号'和&符&的问题,因此结合使用htmlspecialchars_decode和html_entity_decode来转换主题可以为我解决:

->setSubject(htmlspecialchars_decode(html_entity_decode($subject), ENT_QUOTES))

有关更多说明,请参见https://www.php.net/manual/en/function.html-entity-decode.phphttps://www.php.net/manual/en/function.htmlspecialchars-decode.php