【问题标题】:Send base64 image using nodemailer使用 nodemailer 发送 base64 图像
【发布时间】:2017-11-26 18:46:40
【问题描述】:

这是我尝试使用 nodemailer 发送带有 base64 图像的 html 电子邮件的方法。

html: `<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" />`,

但我收到的电子邮件不是原始 html,而是:

<img src=3D"data:image/png;base64,=
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK=
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=3D=3D" />

在哪里/什么添加了这些“3D”以及如何发送正确的 base64 图像? 谢谢

【问题讨论】:

    标签: node.js base64 nodemailer


    【解决方案1】:

    在您的情况下,= 基本上会替换为 =3D。这是因为名为@9​​87654321@ 的电子邮件编码系统允许non-ASCII 字符表示为ASCII 字符email transportation.

    在quoted-printable 中,任何非标准电子邮件八位字节都表示为一个= 符号,后跟两个十六进制数字表示八位字节的值。 3D 是 ASCII = 的十六进制(引用可打印)表示。

    在标题中设置Content-Transfer-Encoding : quoted-printable

    更多信息请参见What's a 3D doing in this HTML?

    【讨论】:

    • 我已将headers: { 'Content-Transfer-Encoding': 'quoted-printable', }, 添加到消息选项中,但这无济于事,我没有看到图像(在我的电子邮件提供商的网络界面中)。
    • 只有当我转发消息并且邮件提供商将 Content-Transfer-Encoding 从quoted-printable 更改为 8-bit 时才能看到我的图像
    • 如果你自己把 content-transfer-encoding 改成 8 位会怎样??
    • 改成base64,将所有消息编码成base64,图像仍然不可见
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2015-09-18
    相关资源
    最近更新 更多