Javascript 使用Gmail API发送HTML电子邮件

Javascript 使用Gmail API发送HTML电子邮件,javascript,gmail-api,Javascript,Gmail Api,出于某种原因,Gmail API不会发送html电子邮件。发送纯文本效果良好: var message = 'From: Me <me@gmail.com>\r\n' + 'To: Me <me@gmail.com>\r\n' + 'Subject: Hello\r\n\r\n' 'World' var raw = btoa(message) 然后,当我尝试html时,它只显示为一条空消息: var message = 'From: Me &l

出于某种原因,Gmail API不会发送html电子邮件。发送纯文本效果良好:

var message = 'From: Me <me@gmail.com>\r\n' +
    'To: Me <me@gmail.com>\r\n' +
    'Subject: Hello\r\n\r\n'
    'World'

var raw = btoa(message)
然后,当我尝试html时,它只显示为一条空消息:

var message = 'From: Me <me@gmail.com>\r\n' +
    'To: Me <me@gmail.com>\r\n' +
    'Subject: Hello\r\n'
    'Content-Type: text/html; charset=utf-8\r\n' +
    'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
    '<html><body>' +
    '<h1>World</h1>' +
    '</body></html>'

var raw = btoa(message)

有什么想法吗?可能是因为它不符合RFC 2822?

对于初学者,您需要使用base64url编码,使用web/url安全字母表,而不仅仅是标准的btoa base64。如果这不能解决问题,你能发布你的代码和你收到的确切错误信息吗?或者它可以工作而不显示为html?

如何使用JavaScript发送邮件?我使用JavaScript向发送post请求,其中原始变量是请求中的参数。抱歉,我意识到我没有在问题中提供任何上下文。在上面的示例中,如何创建rfc2822字符串,消息变量。我坐在硬编码还是有其他方法@rob@robs,内联样式是否适用于您的?我可以看看您的完整代码吗?我现在也有同样的问题!嗯,我试过“encodeURIbtoamessage”,但当有一个“+”字符时,我得到了400,所以我认为它应该是标准的base64。发送html电子邮件实际上是无错误的,只是结果消息正文是空的。这不是encodeURI,也不是。您需要base64url,它类似于btoa,但不使用/和+。如果没有发生编码到/或+,btoa可以正常工作:如果javascript中没有base64url,那么就使用btoa.replace/,u0.replace+,-。您可以将整个响应包括在HTTP头和正文中吗?当然应该有一个主体。对了,btoamessage。替换“/”、“''.'。替换“+”、“-”效果很好。谢谢你,先生!Oops,不是很完美,必须记住全局应用它:btoamessage.replace/\//g,'.'.'.replace/\+/g'.-'如果您发送的电子邮件正文中包含中文,这是正确的方式:btoaunescapeencodeURIComponentmail.replace/\//g,'.'.replace/\+/g,'-';中文科目:=?UTF-8?B?+btoaunescapeencodeURIComponentsubject+=