2014-11-06 102 views
2

由於某些原因,Gmail API不會發送HTML電子郵件。發送明文正常工作:使用Gmail API發送HTML郵件

var message = 'From: Me <[email protected]>\r\n' + 
    'To: Me <[email protected]>\r\n' + 
    'Subject: Hello\r\n\r\n' 
    'World' 

var raw = btoa(message) 

後來,當我嘗試HTML,它只是顯示爲空消息:

var message = 'From: Me <[email protected]>\r\n' + 
    'To: Me <[email protected]>\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?

+0

你如何使用JavaScript發送郵件? – Yang 2014-11-06 01:11:29

+0

我正在使用javascript向[Gmail API](https://developers.google.com/gmail/api/v1/reference/users/messages/send)發送郵寄請求,其中原始變量是參數請求。對不起,我意識到我沒有真正提供任何問題的背景。 – robs 2014-11-06 01:30:38

+0

你如何在上面的例子中創建rfc2822字符串,消息變量。我坐下來硬編碼還是有其他方法嗎? @rob – Sasikanth 2015-03-25 01:59:22

回答

4

對於初學者,您需要使用base64url編碼,使用web/url安全字母表,而不僅僅是標準的btoa()base64。如果這不能解決它,你可以發佈你的代碼和你得到的確切的錯誤信息? (或者它的工作,並沒有顯示爲HTML?)

+0

嗯,我試着'encodeURI(btoa(message))',但當有'+'字符時我得到了400,所以我認爲它應該是標準的base64。發送HTML電子郵件實際上沒有錯誤,只是產生的郵件正文爲空。 – robs 2014-11-06 17:54:54

+1

它不是encodeURI()那也不是。你想要base64url(),就像btoa(),但它不使用「/」和「+」。如果沒有任何事情發生編碼爲「/」或「+」,btoa()可能正常工作。 :)如果javascript中沒有base64url,只需btoa()然後.replace(「/」,「_」)。replace(「+」,「 - 」)。 你可以包含整個響應(HTTP頭+身體)?應該有一個機構。 – 2014-11-07 18:11:26

+0

正確,btoa(message).replace('/','_')。replace('+',' - ')完美無缺。謝謝你,先生! – robs 2014-11-07 23:50:37