0

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

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

这是我的主题,里面有一个撇'

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

现在我该如何处理这样的特殊字符 - 甚至更好的是,在传递一般处理特殊字符的主题之前是否可以调用一个函数?

4

2 回答 2

1

尝试使用htmlentities PHP 函数转义主题:

$subject  = htmlentities("This is my subject with an apostroph ' in it.");
于 2014-01-30T16:47:22.153 回答
1

抱歉,我知道这已经晚了,但它可能会帮助任何仍然遇到这些类似问题的人。我在 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

于 2020-10-23T10:46:27.060 回答