我使用 nodemailer 通过 html 发送了以下 html:
<html>
<div>
<div>The Archimandrite<br /><img src="cid:The Archimandrite" /></div>
</div>
</html>
但是当我使用“显示原始内容”查看 Gmail 中的邮件时,我看到以下 html:
<html>
<div>
<div>The Archimandrite<br /><img src=3D"cid:The Archimandrite" /></=
div>
</div>
</html>
由于某种原因,中间有一个随机的
3D
,一行末尾有一个 =
。
这是怎么回事,我怎样才能让nodemailer正常运行?
使用 nodemailer 的
{ textEncoding: 'base64' }
选项。
一开始我尝试过
textEncoding
,但不知为何似乎没有效果。要么是我做错了什么,要么是我忘记在运行代码之前保存文件,或者是某事,因为它不起作用,我将该选项标记为无用。
我尝试使用 libqp 包,如问题评论中所述。这有助于解决转义字符,但对换行问题没有帮助。
我尝试删除空格并将其替换为明确的
\n
字符。
我尝试了不同的内容行长度。
我尝试将我的 html 硬包装为 75 个字符,以便它适合并且根本不会得到任何
=
字符,但我的一些 html 代码需要很长的行。
然后我尝试通过将
cid
附加到它们的末尾来使我的 _xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
标签变得非常长,并且由于某种原因,当我这样做时效果很好。
我还尝试添加更长的文本行并正确显示。
我注意到,当我通过 GitHub Actions 运行代码时,原始电子邮件显示编码为
7bit
,而本地运行则显示 qouted-printable
。
经过上述尝试的多次组合,我终于回到
textEncoding
选项再试一次,效果很好。