【问题标题】:Why the gmail API sends html emails as plain text?为什么 gmail API 以纯文本形式发送 html 电子邮件?
【发布时间】:2015-03-09 19:46:27
【问题描述】:

我正在尝试使用 gmail API 发送 html 电子邮件,但由于某些原因,它会随机以纯文本/文本形式发送电子邮件。谷歌似乎改变了我设置的内容类型标题。有什么理由吗?电子邮件内容始终完全相同(正如我测试的那样)。 API 是否仍处于试验阶段? 有时当它起作用时,它还会添加Content-Type: multipart/alternative;(尽管我从未设置它)。

编码过程如下所示。代码是 Go,但我想它是自我解释的,并且该过程与语言无关。

    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()

【问题讨论】:

标签: go gmail-api


【解决方案1】:

嗯,您确定这不是您的程序中的错误吗?你能把整个字符串打印出来贴在这里吗?

我刚刚使用 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 内容类型:文本/纯文本;字符集=UTF-8 *你好世界 --089e0141a9a2875c38050ca05201 内容类型:文本/html;字符集=UTF-8 你好世界 --089e0141a9a2875c38050ca05201--

在任何情况下,它都会进行一些解析/清理,但确实允许发送文本/html 电子邮件。

【讨论】:

  • 从您的回答中,content-type: text/html 对我有帮助。
猜你喜欢
  • 2016-03-07
  • 2021-04-12
  • 2012-04-29
  • 2015-09-19
  • 1970-01-01
  • 2018-12-31
  • 2015-07-13
  • 2017-06-28
  • 2016-03-13
相关资源
最近更新 更多