我正在使用GMailAPI发送MIME电子邮件。电子邮件的文本部分总是从超文本标记语言部分重新生成。
我尝试了MIME中的各种变体以及如何构建标题。几年前,另一个人报告了同样的问题:
GmailAPI用自动生成的超文本标记语言替换文本/纯替代正文部分
如果我查看邮件的原始内容,邮件在GMail界面“已发送”项目中显示正确。但是,邮件到达目的地时,文本部分被超文本标记语言部分替换。我用几个目的地测试了它,包括雅虎邮件。
输入多部分消息的相关部分是:
--0000000000d81f74059447a2ad02
Content-type: text/plain; charset=UTF-8
Hello plain text
--0000000000d81f74059447a2ad02
Content-type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<b>Hello html</b>
--0000000000d81f74059447a2ad02--
在目标(Yahoo Mail)查看原始消息会显示以下内容:
--00000000000046bd1105948482e9
Content-Type: multipart/alternative; boundary="00000000000046bd0e05948482e7"
--00000000000046bd0e05948482e7
Content-Type: text/plain; charset="UTF-8"
*Hello html*
--00000000000046bd0e05948482e7
Content-Type: text/html; charset="UTF-8"
<b>Hello html</b>
--00000000000046bd0e05948482e7--
这是完整的测试用例,
https://gist.github.com/borisreitman/448e2699c267221ebbf430b64346baaa
请注意,文本部分现在包含“Hello html”而不是原始的“Hello纯文本”。
您需要在消息的text/平原
和text/html
部分中通过纯文本内容。
修改您的代码消息正文如下,它将作为一个魅力:
--0000000000d81f74059447a2ad02
Content-type: text/plain; charset=UTF-8
Hello plain text
*Hello html*
--0000000000d81f74059447a2ad02
Content-type: text/html; charset=UTF-8
<div dir="ltr">Hello plain text<br><div><br></div><div><b>Hello html</b><br></div></div>
--0000000000d81f74059447a2ad02--