我尝试使用Gmail API发送HTML电子邮件,但出于某些原因,它以纯文本/文本的形式随机发送电子邮件。谷歌似乎改变了我设置的内容类型标题。有什么理由吗?电子邮件内容始终是完全相同的(我测试它)。API还在试验吗?
有时,当它工作时,它也会添加Content-Type: multipart/alternative;
(尽管我从未设置过)。
编码过程如下所示。代码是可行的,但我想它是不言自明的,而且过程是语言不可知论的。
header := make(map[string]string)
header["From"] = em.From.String()
header["To"] = em.To.String()
// header["Subject"] = encodeRFC2047(em.Subject)
header["Subject"] = em.Subject
header["MIME-Version"] = "1.0"
header["Content-Type"] = "text/html; charset=\"utf-8\""
// header["Content-Transfer-Encoding"] = "base64"
header["Content-Transfer-Encoding"] = "quoted-printable"
var msg string
for k, v := range header {
msg += fmt.Sprintf("%s: %s\r\n", k, v)
}
msg += "\r\n" + em.Message
gmsg := gmail.Message{
Raw: encodeWeb64String([]byte(msg)),
}
_, err = gmailService.Users.Messages.Send("me", &gmsg).Do()
最佳答案:
嗯,你确定这不是你程序中的错误吗?你能把整个字符串打印出来并粘贴在这里吗?
我刚刚使用Gmail API发送了一封电子邮件,比如:
收件人:
主题:测试HTML电子邮件2015-01-14 09:45:40
内容类型:文本/HTML
你好世界
在Gmail中,它看起来和预期的一样。好吧,实际上看起来它是用多部分/备选方案包装的,还添加了一个文本/纯文本部分(好消息是imo):
<随机跟踪头>
mime版本:1.0
发件人:
日期:2015年1月14日星期三09:46:41-0800
消息ID:
主题:测试HTML电子邮件2015-01-14 09:45:40
收件人:
内容类型:多部分/可选;边界=089E0141A9A2875C38050CA05201
--089E0141A9A2875C38050CA05201
内容类型:text/plain;charset=utf-8
*你好*世界
--089E0141A9A2875C38050CA05201
内容类型:text/html;charset=utf-8
你好世界
--089E0141A9A2875C38050CA05201--
在任何情况下,它都在进行一些解析/清理,但允许发送文本/HTML电子邮件。