我目前正在尝试测试新的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请求方法,
  • 用于媒体上传请求的Upload URI,以及
  • 仅元数据请求的元数据URI
  • 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/

    10-15 00:18
    查看更多