为何Nodemailer会损坏我的邮件HTML内容?
问题原因与解决方法
原因解析
你看到的=3D和行尾=是Quoted-Printable编码的正常产物,属于邮件MIME传输标准的一部分:
=3D是=字符的编码结果(因为=在Quoted-Printable规则里是转义标记,所以自身需要被编码);- 行尾的
=是换行折叠符,用于拆分过长的邮件行,解码后会自动还原成完整内容。 - 这种编码是为了保证邮件在不同系统间正确传输,Gmail显示的是邮件原始编码内容,但实际渲染时会自动解码,不会影响图片正常显示。
解决方法(可选)
如果希望邮件原始内容不使用Quoted-Printable编码,可以在Nodemailer的邮件配置中禁用该编码,强制使用Base64编码:
const mailOptions = { from: '你的发件邮箱', to: '收件邮箱', subject: '邮件主题', html: ` <html> <div> <div>The Archimandrite<br /><img src="cid:The Archimandrite" /></div> </div> </html> `, attachments: [ { filename: '你的图片文件名', path: '图片本地路径或URL', cid: 'The Archimandrite' } ], // 禁用Quoted-Printable编码 quotedPrintable: false };
注意
无需特意修改配置,所有主流邮件客户端都会自动解码Quoted-Printable编码的内容,完全不影响邮件正常展示。只有当你需要查看原始内容时不想看到编码字符,才需要调整上述设置。
内容的提问来源于stack exchange,提问作者nullromo
相关产品推荐
相关产品推荐

