尝试创建电子邮件模板,编码问题

时间:2016-04-30 12:53:23

标签: php email

我已从此处下载了order.html模板:

http://foundation.zurb.com/emails/email-templates.html

我使用file_get_contents

将文件加载到字符串中
$mailbody = file_get_contents($template);
$message = Swift_Message::newInstance("Email Template Test")
    ->setFrom(array('no-reply@domain.net' => 'Notification Service'))
    ->setTo("email@domain.com")
    ->setBody($mailbody,'text/html');
$mailResult = $swiftmail->send($message);

但是,当我在Outlook 365或w10 Mail应用程序中查看它时,编码是不正确的。文件中有一行说:

<h4>What&apos;s Next?</h4>

在收到的电子邮件中,我得到了:

What&apos;s Next?

我认为原因是出于某种原因它正在&amp;之后添加&amp;。所以在代码中它看起来像这样:What&amp;apos;s Next?,它如上所示。虽然它不像文件中那样,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

看起来您的电子邮件正文已将其字符编码为html实体,而Swift再次执行相同操作。创建你的身体没有html实体(下一步是什么),作为纯文本,让Swift进行编码,或者提供你的身体为html_entity_decode($ mailBody)。

答案 1 :(得分:0)

您已将内容类型设置为text/html,这是正确的,问题似乎与Outlook 365w10 Mail应用无法正确解码hmtl实体有关。

您可能需要html_entity_decode,即:

$mailbody = html_entity_decode(file_get_contents($template));