0

我在使用 1C-Bitrix 框架和 PHPMailer 时遇到了问题。与电子邮件正文有关的问题。

1C-Bitrix 框架根据启用的选项准备正文。例如,如果我打开选项“创建 html 电子邮件的文本版本”,正文将如下所示:

    ---------alt8045b59706
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is my email 

---------alt8045b59706
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<h1> This is my email </h1>

---------alt8045b59706--

如果我的电子邮件模板将附加一个 txt 文件,则正文将如下所示:

---------mix4215b5973f
Content-Type: multipart/alternative; boundary="-------alt3795b5973f"

---------alt3795b5973f
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is my email 

---------alt3795b5973f
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<h1> This is my email </h1> 

---------alt3795b5973f--
---------mix4215b5973f
Content-Type: text/plain; name="=?UTF-8?B?dGVzdC50eHQ=?="
Content-Transfer-Encoding: base64
Content-ID: <427605>

dGVzdCB0ZXh0Cg==

---------mix4215b5973f--

最后,标准电子邮件正文将如下所示:

<h1> This is my email </h1> 

我不能只将这样的电子邮件正文提供给 PHPMailer。它不能正常工作。我试过 msgHtml() - 也不起作用。

但是标准的 php mail() 函数适用于这样的电子邮件正文。我发现在 PHPMailer 中我需要分别设置 Body 和 AltBody。但是,对我来说解析此类电子邮件正文的最佳方法是什么。

也许有人知道它的工具?
或者 PHPMailer 有一个内置的方法吗?
也许我需要手动设置正确的“Content-Type”标头(框架告诉我正确的 Content-Type)

提前致谢。

4

1 回答 1

0

您不需要考虑这些事情 - PHPMailer 会为您完成。这就是制作该结构所需要做的一切:

$mail->isHTML();
$mail->Body = '<h1> This is my email </h1>';
$mail->AltBody = 'This is my email';
$mail->addAttachment('path/to/file.pdf');

此外,您为带有附件的邮件正文提供的示例中的 MIME 结构不正确,因此我不希望它在任何情况下都能正常工作。

于 2018-07-28T06:33:28.117 回答