Gmail API 游乐场:发送方法,转换的 MIME 原始 header 发送时不填充电子邮件字段
Gmail API playground: Send method, converted MIME raw header not populating email fields on send
我正在使用 Google OAuth 2.0 Playground 并尝试发送电子邮件。认证工作正常。这是我要发送的非常简单的消息(已更改电子邮件地址以防止垃圾邮件):
to: 'Michael To' <FakeMichael@gmail.com>
from: 'John From' <JohnF@mydomain.com>
subject: 'Test Message'
htmlBody: '<b>HI!</b><br>Test Message'
我使用 VBA 将其转换为 Base64 RFC 822,这让我得到了这个(我尝试交换其他 Whosebug post 的“+”和“-”,但无济于事):
dG86ICdNaWNoYWVsIFRvJyA8RmFrZU1pY2hhZWxAZ21haWwuY29tPg1mcm9tOiAnSm9obiBGcm9tJyA8Sm9obkZAbXlkb21haW4uY29tPg1zdWJqZWN0OiAnVGVzdCBNZXNzYWdlJw1odG1sQm9keTogJzxiPkhJITwvYj48YnI-VGVzdCBNZXNzYWdlJw==
在 Playground 中,我的方法是 POST 并且我添加了 2 个 headers:
raw: and the Base64 string above (no quotes or anything)
Content-Type: message/rfc822 <I added this because I kept getting an a different error. Putting this prevetned that error>
请求 URI(删除了 https 因为所以不会让我 post 超过 2 个链接)://www.googleapis.com/upload/gmail/v1/users/me/messages/send
我点击 "send the request" 并得到一个 OK 响应:
这是我的要求:
POST /upload/gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Raw: <string above>
Content-length: 0
Content-type: message/rfc822
Authorization: Bearer <my token>
回复:
HTTP/1.1 200 OK
Alternate-protocol: 443:quic,p=1
Content-length: 91
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Vary: Origin, X-Origin
Server: UploadServer ("Built on Jun 6 2015 11:14:45 (1433614485)")
Etag: "YAnoF_dHYOakPARISZQhTvRsqto/nwevNUuzaUU_lB19L-UhrwaaUSM"
Pragma: no-cache
Cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Wed, 10 Jun 2015 15:59:36 GMT
Content-type: application/json; charset=UTF-8
{
"labelIds": [
"SENT"
],
"id": "14dde32bc92c9XYZ",
"threadId": "14dde32bc92c9XYZ"
}
但是,当我转到我的 Gmail 已发邮件文件夹时,邮件在那里,但收件人、主题或 Body 字段中没有任何内容:See Screenshot
我不得不想象这很简单,但由于我是 Google Gmail API、MIME 和处理原始 Base64 东西的新手,所以我运气不佳.
在此先感谢您的帮助。
--- 根据 THOLLE 的回复进行编辑 ---
很有帮助!我删除了原始 base64 字符串 header 并输入:
From: 'John From' <JohnF@mydomain.com>
Subject: Test Message
To: 'Michael To' <FakeMichael@gmail.com>
Test Message
进入"Enter request body"并发送,太棒了!
三个后续问题:
- 是否存在任何安全风险或限制(最大长度?我看到可能有 2mb 的限制,但那会是很多文本。)以这种方式发送(在 body 中)反对header 中的原始 Base64 字符串?
- (我会深入探讨这个问题)如何制作消息 body HTML? "Content-Type: message/rfc822" 的内容类型是否阻止我发送它 HTML?发送它 HTML 是此应用程序的要求,我不能有两种内容类型,是否有我可以使用的 HTML 参数,或者我运气不好?
- (我也会做功课)我如何在电子邮件中包含附件,比如 PDF 文件?
再次感谢!
我认为您违反了 RFC 822 标准的一些小细节:
It is recommended
that, if present, headers be sent in the order "Return-
Path", "Received", "Date", "From", "Subject", "Sender",
"To", "cc", etc.
我这辈子都找不到,但我也认为 headers 的第一个字符必须大写。试试这个:
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Test Message
如果您选择 message/rfc822 作为您的 Content-Type,您也不想发送 base64 编码的邮件。只需按原样提供上面的示例邮件。
POST /upload/gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Content-length: 108
Content-type: message/rfc822
Authorization: Bearer {YOUR_ACCESS_TOKEN}
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Test Message
如果您想要HTML,只需将您的消息修改为:
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<b>Test Message</b>
我正在使用 Google OAuth 2.0 Playground 并尝试发送电子邮件。认证工作正常。这是我要发送的非常简单的消息(已更改电子邮件地址以防止垃圾邮件):
to: 'Michael To' <FakeMichael@gmail.com> from: 'John From' <JohnF@mydomain.com> subject: 'Test Message' htmlBody: '<b>HI!</b><br>Test Message'
我使用 VBA 将其转换为 Base64 RFC 822,这让我得到了这个(我尝试交换其他 Whosebug post 的“+”和“-”,但无济于事):
dG86ICdNaWNoYWVsIFRvJyA8RmFrZU1pY2hhZWxAZ21haWwuY29tPg1mcm9tOiAnSm9obiBGcm9tJyA8Sm9obkZAbXlkb21haW4uY29tPg1zdWJqZWN0OiAnVGVzdCBNZXNzYWdlJw1odG1sQm9keTogJzxiPkhJITwvYj48YnI-VGVzdCBNZXNzYWdlJw==
在 Playground 中,我的方法是 POST 并且我添加了 2 个 headers:
raw: and the Base64 string above (no quotes or anything)
Content-Type: message/rfc822 <I added this because I kept getting an a different error. Putting this prevetned that error>
请求 URI(删除了 https 因为所以不会让我 post 超过 2 个链接)://www.googleapis.com/upload/gmail/v1/users/me/messages/send
我点击 "send the request" 并得到一个 OK 响应:
这是我的要求:
POST /upload/gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Raw: <string above>
Content-length: 0
Content-type: message/rfc822
Authorization: Bearer <my token>
回复:
HTTP/1.1 200 OK
Alternate-protocol: 443:quic,p=1
Content-length: 91
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Vary: Origin, X-Origin
Server: UploadServer ("Built on Jun 6 2015 11:14:45 (1433614485)")
Etag: "YAnoF_dHYOakPARISZQhTvRsqto/nwevNUuzaUU_lB19L-UhrwaaUSM"
Pragma: no-cache
Cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Wed, 10 Jun 2015 15:59:36 GMT
Content-type: application/json; charset=UTF-8
{
"labelIds": [
"SENT"
],
"id": "14dde32bc92c9XYZ",
"threadId": "14dde32bc92c9XYZ"
}
但是,当我转到我的 Gmail 已发邮件文件夹时,邮件在那里,但收件人、主题或 Body 字段中没有任何内容:See Screenshot
我不得不想象这很简单,但由于我是 Google Gmail API、MIME 和处理原始 Base64 东西的新手,所以我运气不佳.
在此先感谢您的帮助。
--- 根据 THOLLE 的回复进行编辑 ---
很有帮助!我删除了原始 base64 字符串 header 并输入:
From: 'John From' <JohnF@mydomain.com>
Subject: Test Message
To: 'Michael To' <FakeMichael@gmail.com>
Test Message
进入"Enter request body"并发送,太棒了!
三个后续问题:
- 是否存在任何安全风险或限制(最大长度?我看到可能有 2mb 的限制,但那会是很多文本。)以这种方式发送(在 body 中)反对header 中的原始 Base64 字符串?
- (我会深入探讨这个问题)如何制作消息 body HTML? "Content-Type: message/rfc822" 的内容类型是否阻止我发送它 HTML?发送它 HTML 是此应用程序的要求,我不能有两种内容类型,是否有我可以使用的 HTML 参数,或者我运气不好?
- (我也会做功课)我如何在电子邮件中包含附件,比如 PDF 文件?
再次感谢!
我认为您违反了 RFC 822 标准的一些小细节:
It is recommended that, if present, headers be sent in the order "Return- Path", "Received", "Date", "From", "Subject", "Sender", "To", "cc", etc.
我这辈子都找不到,但我也认为 headers 的第一个字符必须大写。试试这个:
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Test Message
如果您选择 message/rfc822 作为您的 Content-Type,您也不想发送 base64 编码的邮件。只需按原样提供上面的示例邮件。
POST /upload/gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Content-length: 108
Content-type: message/rfc822
Authorization: Bearer {YOUR_ACCESS_TOKEN}
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Test Message
如果您想要HTML,只需将您的消息修改为:
From: John From <JohnF@mydomain.com>
Subject: Test Subject
To: Michael To <FakeMichael@gmail.com>
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<b>Test Message</b>