2015-01-12 119 views
2

我试图发送一个HTML邮件使用Gmail的API,但由于某些原因,它随机发送电子邮件为纯文本/文本。 Google似乎改变了我设置的内容类型标题。这有什么理由吗?电子邮件的内容一直都是一样的(就像我测试的那样)。 API是否仍然是实验性的? 有时当它工作时,它也增加了Content-Type: multipart/alternative;(尽管我从未设置它)。为什么gmail API以纯文本格式发送html电子邮件?

编码过程如下所示。代码是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

问题类似于http://stackoverflow.com/questions/26841905/sending-email-multipart-signed-rfc-3156-via-gmail-apis – SGC

回答

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电子邮件。

+1

从你的答案'content-type:text/html'是什么帮助我。 – Nakilon

相关问题