当前位置: 首页 > 知识库问答 >
问题:

使用Gmail API恢复上传文件

沈实
2023-03-14

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

目前,我可以用可恢复的URI发送电子邮件,但没有附件(使用邮递员)。文档没有提供非常清楚的请求应该是什么样子的例子,在搜索互联网后,似乎也没有很多例子。

我的要求分为两部分:

>

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?上传类型=可恢复

然后,我继续向位置标头中返回的URL发出PUT请求。

第二个请求如下:

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: 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个答案

尉迟晔
2023-03-14

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

 类似资料:
  • 有人能告诉我如何在dropwizard 1.2.6中实现可恢复的文件上传吗?因此,如果用户试图上传一个大文件(4-5 GB),如果出现网络故障或浏览器错误关闭,那么用户将能够从中断的地方恢复该过程。

  • 使用 fetch 方法来上传文件相当容易。 连接断开后如何恢复上传?这里没有对此的内建选项,但是我们有实现它的一些方式。 对于大文件(如果我们可能需要恢复),可恢复的上传应该带有上传进度提示。由于 fetch 不允许跟踪上传进度,我们将会使用 XMLHttpRequest。 不太实用的进度事件 要恢复上传,我们需要知道在连接断开前已经上传了多少。 我们有 xhr.upload.onprogress

  • 我正在处理一个需要一些文件传输的Python项目。连接的一侧高度可用(REHL6),并且始终在线。但另一边是开着关着(Windows 7),连接周期也没有保证。文件是双向传输的,大小在10MB到2GB之间。 有没有可能恢复与paramiko的文件传输,而不是从一开始就传输整个文件。 我想使用rSync,但一边是windows,我想避免使用cwRsync和DeltaCopy

  • 我试图通过删除“内部”恢复func来实现这一点,但在这种情况下,“主”恢复不能恢复“内部”goroutine内部的恐慌。 操场 我试图听从@momer的建议,通过通道发送错误并在主goroutine中处理它,而不是试图制造恐慌:

  • 我正在测试Android的驱动器API,以便上传一个文件,该文件可以显示上传的进度,并能够在失败时恢复上传(文件大小>30 MB) 与以下问题:上传下载的大文件到谷歌驱动器给错误,上传进度监听器没有激发(谷歌驱动器API)我能够得到上传进度,他们提到那些是可恢复的上传。但是,我没有看到任何寻找上传错误和恢复逻辑的代码,因此,如果我杀死应用程序并“恢复”上传,它只是从头开始。

  • 我对twitter api有意见。我使用这个脚本脚本删除推文删除推文形成一个帐户。我看到了twitepy方法(api,user_timeline) 不会返回包含媒体的推文(从网站访问推文,它们不会出现在时间线中,但会出现在另一个名为“照片和视频”的选项卡中),因此不会被删除。include_实体不是此方法的参数。 我怎样才能恢复这些推文?我以为我可以用用户名作为查询进行搜索,但那不起作用,而且效率