Gmail Message Send APIは、送信メッセージから doctype と HTML コメントを取り除いているようです。
再現
- https://developers.google.com/gmail/api/v1/reference/users/messages/sendに移動します
- 「Try it!」まで下にスクロールします。
- OAuthでログイン
- "userId" に次のように入力します: me
- 「raw」には、次のノード スクリプトの結果を入力します。
generateMessage.js
var email = "From: 'me'\r\n" +
"To: bradvogel@outlook.com\r\n" +
"Subject: Test Doctype\r\n" +
"Content-Type: text/html; charset=utf-8\r\n" +
"\r\n" +
"<!doctype html>" +
"<html><body>test <!--[if !mso]>hidden from outlook<!--<![endif]--> </body></html>";
var base64 = new Buffer(email).toString('base64');
var websafeBase64 = base64.replace(/\//g, '_').replace(/\+/g, '-');
console.log(websafeBase64);
実結果
bradvogel@outlook.com で受信した電子メールから未加工のメッセージ ソースを表示すると、doctype やコメントなしで送信されます。
To: bradvogel@outlook.com
Subject: Test Doctype
Content-Type: multipart/alternative; boundary=089e0102fc52abed0a04ff355038
--089e0102fc52abed0a04ff355038
Content-Type: text/plain; charset=UTF-8
test
--089e0102fc52abed0a04ff355038
Content-Type: text/html; charset=UTF-8
<html><body>test </body></html>
--089e0102fc52abed0a04ff355038--
期待される結果
以下の doctype に注意してください。
To: bradvogel@outlook.com
Subject: Test Doctype
Content-Type: multipart/alternative; boundary=089e0102fc52abed0a04ff355038
--089e0102fc52abed0a04ff355038
Content-Type: text/plain; charset=UTF-8
test
--089e0102fc52abed0a04ff355038
Content-Type: text/html; charset=UTF-8
<!doctype html>
<html><body>test <!--[if !mso]>hidden from outlook<!--<![endif]--> </body></html>
--089e0102fc52abed0a04ff355038--
ノート
SMTP 経由で同じメッセージを送信すると、メッセージ全体が保持されます。
Doctype とコメントは、Outlook および iOS メールの電子メールをフォーマットするために必要です。API は生の rfc822 メッセージを取得し、それをマルチパート/オルタナティブにテキストと HTML 表現で変換しているように見えますが、重要なコンテンツは取り除かれています。
Gmail Message Send api を介して送信されたメッセージで doctype とコメントを保持する方法を知っている人はいますか?