使用Resumable upload w / Gmail API附加文件

时间:2017-01-26 00:27:24

标签: gmail gmail-api

我正在尝试使用Gmail的Resumable选项将附件上传到电子邮件中。文档参考:https://developers.google.com/gmail/api/guides/uploads#resumable

目前,我可以使用可恢复的URI发送电子邮件,但没有附件(使用邮递员)。文档没有提供非常清楚的示例,说明请求的具体外观,并且在搜索互联网之后似乎没有很多示例。

我的要求分为两部分:

  1. 初始请求 -

    Request URL:
    POST /upload/gmail/v1/users/me/messages/send?uploadType=resumable
    Host: www.googleapis.c om (can't post links so I interrupted the url)
    
    Headers: 
    Authorization: Bearer my_token_here
    Content-Length: 113
    Content-Type: application/json
    X-Upload-Content-Length: 67
    X-Upload-Content-Type: message/rfc822
    
    Body:
    {"raw":"VG86IG5pcnZhbmEucm9ja2VyQGdtYWlsLmNvbQpTdWJqZWN0OiBUZXN0RW1haWxTdWJqZWN0MwoKTWVzc2FnZSBjb250ZW50cyAjMy4"}
    
  2. 正文是64位编码的字符串,包含“收件人”,“主题”和“电子邮件”内容。然后gmail返回一个空主体的响应,以及一个如下所示的“location”标题:googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=resumable&upload_id=BRnB2UoAsKwzNMoQAy-JtmP6mu5agltqOWZ9uerI3k- KNTDJ73PWEjKuAHpko4RN6weSEysddH2kjj4G24uFw6E9oPv1XP69l7_KcmNuW-RAoz_5oS1T_4_E。 (已移除https://,因为此帐户在帖子中只能有一个链接)

    然后我跟进对位置标题中返回的URL的PUT请求。

    1. 第二个请求如下所示:

      Request URL: 
      PUT /upload/gmail/v1/users/me/messages/send?uploadType=resumable&upload_id=BRnB2UoAsKwzNMoQAy-JtmP6mu5agltqOWZ9uerI3k-KNTDJ73PWEjKuAHpko4RN6weSEysddH2kjj4G24uFw6E9oPv1XP69l7_KcmNuW-RAoz_5oS1T_4_E
      Host: www.googleapis.c om
      
      Headers: 
      Content-Length: 67
      Content-Type: message/rfc822
      
      Body:
      {"raw":"VG86IG5pcnZhbmEucm9ja2VyQGdtYWlsLmNvbQpTdWJqZWN0OiBUZXN0RW1haWxTdWJqZWN0MwoKTWVzc2FnZSBjb250ZW50cyAjMy4"}
      --- OR ---
      I choose the binary option, and attach the file I am looking to upload via Postman.
      
    2. 我收到了Gmail的回复,其中包含以下对象:

          {
            "id": "159d7ded3125e255",
            "threadId": "159d7ded3125e255",
            "labelIds": [
              "SENT"
            ]
          }
      

      电子邮件已成功发送,但电子邮件中没有附件。当我在Gmail中显示原始电子邮件时,没有任何附件的证据。原始如下:

          Received: from 325276275830 named unknown by gmailapi.google.com with HTTPREST; Wed, 25 Jan 2017 15:03:33 -0800
          To: some.name@gmail.com
          Subject: TestEmailSubject3
          Date: Wed, 25 Jan 2017 15:03:33 -0800
          Message-Id: <CEROA6F=0ohk33RD9XyC_gW1DZO88xYF4bXYqrCSct62MUuytDw@mail.gmail.com>
          From: name_here@gmail.com
      
          Message contents #3.
      

      我错过了什么?我是否需要以不同的方式对某些特定内容进行编码,或者将某些数据放在不同的位置?我没有收到任何错误。我已经在这几天工作了,我只是想不出来。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我使用Nodemailer创建带附件的电子邮件,将结果保存到文件,然后使用this上传。