如何将大邮件上传到 Gmail

Posted

技术标签:

【中文标题】如何将大邮件上传到 Gmail【英文标题】:How to upload large messages to Gmail 【发布时间】:2015-10-11 06:59:49 【问题描述】:

我正在使用 Gmail API 导入邮件,我注意到 以下问题。目前我正在对这个网址进行 POST:

https://www.googleapis.com/gmail/v1/users/me/messages?uploadType=multipart

设置了以下 http 标头:

Content-Length: <n>
Content-Type: application/json

发布的json数据如下:


"labelIds": ["Label_154"],
"raw": "RnJvbTo..."

(原始数据当然是更大的 based64 编码的 RFC-822 消息)

这可行,但对于一位客户,他们收到 http 413 错误 一些消息,我认为这意味着消息太大。我有 尚未发现实际消息有多大。我看过一些文档 那说我应该改用这个网址:

https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=multipart

然后API抱怨不支持json,我应该使用 内容类型消息/rfc822。我希望继续使用 json 和 原始编码数据,因此我不必对代码进行重大更改。 你能告诉我这个方法的实际消息大小限制是多少吗? 有没有办法使用不同的端点达到 35mb 的上限?

【问题讨论】:

【参考方案1】:

对于大于几 MB 的文件,最好使用媒体 (/upload) 路径。是的,它只接受电子邮件消息(消息/rfc822 有效负载)。希望更改代码不会太难。由于您已经必须有一个 base64(message/rfc822) 来发送到现有的 JSON 端点,您可以停止对消息进行 base64 处理,然后将其包装在 JSON 中。

如果您使用 /upload 端点,您将能够一直发送邮件,直到最大 gmail 邮件大小(25MB,在 base64 编码后可能高达 34MB)。

【讨论】:

谢谢。我如何指定将消息分配给哪个标签,就像我现在使用 json“LabelIds”字段一样? 我相信我现在有这个工作......我将*** Content-Type 设置为 multipart/related,然后包含 Content-Type application/json 的单个消息部分,并设置它的值到我已经创建的 json 部分。

以上是关于如何将大邮件上传到 Gmail的主要内容,如果未能解决你的问题,请参考以下文章

PHP HTML - 将上传的文件发送到 Gmail

无法在 codeigniter 中从 gmail 发送电子邮件,SMTP 身份验证错误

如何从 gmail 下载许多电子邮件附件

Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID

电子邮件缩略图 URL 在 gmail 中更改为 googleusercontent.com

如何将忘记密码的邮件陷阱配置到 gmail laravel 8