gmail-api - Gmail API 仍然使用从 HTML 自动生成的替代正文部分替换 text/plain 替代正文部分
问题描述
我正在使用 GMail API 发送 MIME 电子邮件。电子邮件的文本部分总是从 HTML 部分重新生成。
我尝试了 MIME 的各种变体以及我如何构建标题。几年前,另一个人报告了同样的问题:
Gmail API 将 text/plain 替代正文部分替换为从 HTML 自动生成的正文部分
如果我查看邮件的原件,邮件会在 GMail 界面的“已发送”项目中正确显示。但是,消息到达目的地时,文本部分被替换为 HTML 部分。我用几个目的地测试了它,包括雅虎邮箱。
输入多部分消息的相关部分是:
--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 plain text”。
解决方案
消息组合的正确语法令人困惑
您需要在消息的和部分中都传递纯文本内容。text/plain
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--
推荐阅读
- hsqldb - 语句中出现 HSQL 意外标记
- python - 定义一个函数 digits_stars().... 我似乎无法正确执行它
- javascript - 将属性添加到 JavaScript 中的对象数组
- javascript - 〜foo(参数);nodejs的这段代码中的“~”是什么意思?
- python - Python,Selenium,元素消失后如何退出while循环?
- python - Python中的多线程爬虫
- python - Python 按位运算,对现有变量进行更改
- javascript - Javascript调用方法混乱
- git - 如何在合并提交中获取冲突文件列表(事后)
- macos - 如何将 Mac OSX 中文件的创建日期设置为当前日期?