2017-01-26 31 views
1

我试图使用Gmail的Resumable选项将附件上传到电子邮件。文档参考:https://developers.google.com/gmail/api/guides/uploads#resumable使用Resoumable上传(使用Gmail API)附加文件

目前我能够发送电子邮件与可恢复的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"} 
    

身体是一个64位编码的字符串,包括收件人,主题和电子邮件内容。然后,gmail返回一个空的正文响应,并显示如下所示的“位置”标题:googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=resumable & upload_id = BRnB2UoAsKwzNMoQAy-JtmP6mu5agltqOWZ9uerI3k- KNTDJ73PWEjKuAHpko4RN6weSEysddH2kjj4G24uFw6E9oPv1XP69l7_KcmNuW-RAoz_5oS1T_4_E。 (删除https://,因为此帐户只能在帖子中有一个链接)

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

  • 第二请求看起来如下:

    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. 
    
  • 我收到响应来自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: [email protected] 
        Subject: TestEmailSubject3 
        Date: Wed, 25 Jan 2017 15:03:33 -0800 
        Message-Id: <[email protected]om> 
        From: [email protected] 
    
        Message contents #3. 
    

    我错过了什么?我是否需要以不同的方式对某些特定内容进行编码,或将某些数据放在不同的位置?我没有收到任何错误。我已经为此工作了几天,但我无法弄清楚。

    +0

    尝试使用在相关[SO帖]代码(http://stackoverflow.com/a/31792244/5995040),它是多,但它可以帮助你有一个想法附件是如何工作的。希望这可以帮助。 –

    +0

    Rebot先生 - 感谢您的回复。我仍然没有找到可行的解决方案。我已经能够获得上传文件,并成功地通过电子邮件发送可恢复的请求 - 然而,这是当发起请求是空的,我在下面的请求发送一个完全由消息/ RFC822格式的邮件,其中包括base64编码的文件。 – halldr

    +0

    'Content-Type:multipart/mixed; boundary = foo_bar_baz MIME-Version:1.0 至:[email protected] from:drew @ azuqua。com 主题:带附件的文件 - 可恢复上传 --foo_bar_baz Content-Type:text/plain; charset = UTF-8 MIME版本:1.0 内容传输编码:7位 这应该是电子邮件! --foo_bar_baz 内容类型:image/JPEG MIME-版本:1.0 内容传送编码:BASE64 内容处置:附件; filename = BIG_PUPPY_PIC.jpg encoded_file_went_here_jkl4fliq43jga43gai --foo_bar_baz - ' – halldr

    回答

    0

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