我正在编写代码来生成报告并通过电子邮件发送。在这种情况下,我试图将报告嵌入为 html 正文,但 Outlook 未正确呈现报告的某些部分。特别是它似乎是引用的可打印编码的伪影。我看不到我的编码文本有任何问题。
我已将问题缩小到以下示例:
Content-Type: multipart/mixed; boundary="===============0525238969=="
MIME-Version: 1.0
Subject: Your Message(s) from 11/15/2018 04:48:45 PM to 11/01/2019 04:48:45 PM
From: test@foo.com
To: test@foo.com,foo@test.com
Date: Fri, 01 Nov 2019 16:48:46 -0500
Content-Disposition: inline
--===============0525238969==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
<br/>
Your report:<br/>
<br/>
<table border=3D1>
<tr><td colspan=3D"11">Found 1 record(s) between 11/15/2018 04:48:45 PM and=
11/01/2019 04:48:45 PM<br/></td></tr>
</table><br/>
=09=09=09
--===============0525238969==--
将此保存为 *.eml 文件并在 Outlook 中打开,我注意到两个问题:
1)表格单元格内的文本在第二个日期之前有一个等号而不是一个空格:
Found 1 record(s) between 11/15/2018 04:48:45 PM and=11/01/2019 04:48:45 PM
^
它应该是这样的:
Found 1 record(s) between 11/15/2018 04:48:45 PM and 11/01/2019 04:48:45 PM
^
2)最后有一个“=0”,可能是制表符中的一个伪影,它被编码为=09。自动剥离这些选项卡是有问题的,因为报告是从用户编辑的模板生成的。很难知道制表符在某些情况下是否相关。
实际上,我可以通过在 html 内容的末尾强制添加一个额外的 \n 来解决第二个问题,但我将其包括在此处,以防它与理解上面的问题 #1 有关。
PS我在“eM Client”中加载了文件,它没有遇到这些故障。我倾向于认为这可能是 Outlook 中的一个错误,但如果这是我的错误,它会更简单(而且更有可能)。