我目前正在尝试测试新的Gmail REST API 。
在API Explorer中,可以使用OAuth 2.0授权请求并执行请求,即发送消息。
首先,我授权。
我正在使用以下测试数据(当然,我使用了有效的to
电子邮件地址):
{
"raw": "c2VuZGluZyBhIG1haWwgdXNpbmcgR21haWwgUkVTVCBBUEk=",
"payload": {
"headers": [
{ "name": "to", "value": "info@something.com" },
{ "name": "from", "value": "taifunbaer@gmail.com" },
{ "name": "subject", "value": "Test Gmail REST API" }
],
"mimeType": "text/plain"
}
}
我还得到了
200 OK
和下面的结果,看起来不错。{
"id": "146dee391881b35b",
"threadId": "146dee391881b35b",
}
但是,邮件将无法成功发送,我可以在收件箱中的
nobody@gmail.com
中找到一条消息;:"An error occurred, your message has not been sent."
问题:
1.有人成功测试了吗?
2.是否必须添加其他一些参数才能使它运行?
编辑:有两种不同的HTTP请求方法,
The API Explorer currently supports metadata requests only
,这意味着没有附件的纯文本消息,这就是我正在尝试做的。 最佳答案
得到它了!
阅读我发现的RFC 2822 specification后,需要在raw
参数中传递完整的消息,请参见示例:
From: John Doe <jdoe@machine.example>
To: Mary Smith <mary@example.net>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello. So, "Hello".
因此,在对完整消息进行base64编码后,将其传递给
raw
参数而不使用任何其他参数,它可以正常工作。编辑1:
如@Amit所述,它必须是基于网络安全的base64 编码,另请参见https://code.google.com/p/stringencoders/wiki/WebSafeBase64
仅将
+
转换为-
并将/
转换为_
对我来说就足够了。编辑2:
要在此处回答@Hjulle的问题,请举一个示例:您只需要
userId
,而在请求正文中则需要raw
参数。假设您的电子邮件地址为jdoe@machine.example
首先,Base64使用online encoder对完整消息进行编码(请参见上文),您将获得以下字符串:
RnJvbTogSm9obiBEb2UgPGpkb2VAbWFjaGluZS5leGFtcGxlPiAKVG86IE1hcnkgU21pdGggPG1h
cnlAZXhhbXBsZS5uZXQ+IApTdWJqZWN0OiBTYXlpbmcgSGVsbG8gCkRhdGU6IEZyaSwgMjEgTm92
IDE5OTcgMDk6NTU6MDYgLTA2MDAgCk1lc3NhZ2UtSUQ6IDwxMjM0QGxvY2FsLm1hY2hpbmUuZXhh
bXBsZT4KClRoaXMgaXMgYSBtZXNzYWdlIGp1c3QgdG8gc2F5IGhlbGxvLiBTbywgIkhlbGxvIi4=
现在将
+
转换为-
,将/
转换为_
,您会得到RnJvbTogSm9obiBEb2UgPGpkb2VAbWFjaGluZS5leGFtcGxlPiAKVG86IE1hcnkgU21pdGggPG1h
cnlAZXhhbXBsZS5uZXQ-IApTdWJqZWN0OiBTYXlpbmcgSGVsbG8gCkRhdGU6IEZyaSwgMjEgTm92
IDE5OTcgMDk6NTU6MDYgLTA2MDAgCk1lc3NhZ2UtSUQ6IDwxMjM0QGxvY2FsLm1hY2hpbmUuZXhh
bXBsZT4KClRoaXMgaXMgYSBtZXNzYWdlIGp1c3QgdG8gc2F5IGhlbGxvLiBTbywgIkhlbGxvIi4=
现在,将其传递到API Explorer的
raw
参数中。关于rest - 如何使用新的Gmail REST API成功发送邮件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24460422/