为什么gmail API以纯文本形式发送html电子邮件?

时间:2015-01-12 04:24:53

标签: go gmail-api

我尝试使用gmail API发送html电子邮件,但出于某些原因,它会以普通/文本的形式随机发送电子邮件。 Google似乎改变了我设置的内容类型标题。有什么理由吗?电子邮件内容始终完全相同(我测试它)。 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()

1 个答案:

答案 0 :(得分:1)

嗯,你确定它不是你程序中的错误吗?你能打印出整个字符串并将其粘贴在这里吗?

我刚刚使用Gmail API发送了一封电子邮件:

To: <redacted>
Subject: test html email 2015-01-14 09:45:40
Content-type: text/html

<html><body><b>hello</b>world</body></html>

它看起来像收件人在Gmail中的结束一样。好吧,实际上看起来它已经包装在一个多部件/替代品中并添加了文本/普通部件(好东西IMO):

<random trace headers>
MIME-Version: 1.0
From: <redacted>
Date: Wed, 14 Jan 2015 09:46:41 -0800
Message-ID: 
Subject: test html email 2015-01-14 09:45:40
To: <redacted>
Content-Type: multipart/alternative; boundary=089e0141a9a2875c38050ca05201

--089e0141a9a2875c38050ca05201
Content-Type: text/plain; charset=UTF-8

*hello*world

--089e0141a9a2875c38050ca05201
Content-Type: text/html; charset=UTF-8

<html><body><b>hello</b>world</body></html>
--089e0141a9a2875c38050ca05201--

无论如何,它正在进行一些解析/清理,但 允许发送文本/ html电子邮件。