【问题标题】:Gmail attachment size limitationGmail 附件大小限制
【发布时间】:2021-02-06 09:46:04
【问题描述】:

我们正在使用 Google .net 客户端库通过 gmail api C# .NET 实现电子邮件发送。我们发送包含大小超过 7 兆字节的大型附件的电子邮件,一切正常

var mailMessage = new System.Net.Mail.MailMessage
                                  {
                                      Body = message.Body,
                                      Subject = message.Subject
                                  };
foreach (var to in message.To) mailMessage.To.Add(to.Address);
foreach (var a in message.Attachments) mailMessage.Attachments.Add(a);

var mimeMessage = MimeMessage.CreateFromMailMessage(mailMessage);

var gmailMessage = new Google.Apis.Gmail.v1.Data.Message { Raw = EncodeToBase64Url(mimeMessage.ToString()) };
await gmailService.Users.Messages.Send(gmailMessage, "me").ExecuteAsync().ConfigureAwait(false);

让我们感到困惑的是附件大小,因为我们无法找到有关其限制的信息。此外,由于 Gmail 文档,它具有添加附件的方法“Upload”,我们尝试了解何时必须使用它而不是像我们一样简单发送(请参阅上面的代码)。

【问题讨论】:

标签: c# .net google-api gmail-api google-api-dotnet-client


【解决方案1】:

答案:

每封 Gmail 邮件的总附件大小必须小于 25MB。

更多信息:

来自sending attachments with Gmail上的文档:

您最多可以发送 25 MB 的附件。如果您有多个附件,则它们的总和不能超过 25 MB。

关于上传方式:

  • Simple upload 专为上传小于 5MB 的小文件而设计,您可以在一个请求中完成整个上传。
POST /upload/gmail/v1/users/userId/messages/send?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: message/rfc822
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token

Email Message data
  • Multpart upload 用于当您希望将元数据与上传数据一起发送时,例如消息所属的线程或消息应具有的标签。
POST /upload/gmail/v1/users/userId/messages/send?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer your_auth_token
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: number_of_bytes_in_entire_request_body

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{
  "id": string,
  "threadId": string,
  "labelIds": [
    string
  ],
  "snippet": string,
  "historyId": unsigned long,
  "payload": {
    "partId": string,
    "mimeType": string,
    "filename": string,
    "headers": [
      {
        "name": string,
        "value": string
      }
    ],
    "body": users.messages.attachments Resource,
    "parts": [
      (MessagePart)
    ]
  },
  "sizeEstimate": integer,
  "raw": bytes
}

--foo_bar_baz
Content-Type: message/rfc822

Email Message data
--foo_bar_baz--

多部分消息的正文应包含users.messages.attachments resource

参考资料:

【讨论】:

  • 嗨@Rafa Guillermo,您能否澄清一下何时使用“上传”方法而不是简单的发送? IE。我正在将附件添加到大小大于或小于 5 MB 的电子邮件中,简单的“发送”方法效果很好,无需调用“上传”方法。
  • 如果连接失败,如果要再次完整上传文件,基本上使用simple。从字面上看,这是一次性发送文件或部分发送文件的区别 - 如果您的连接不稳定,请继续上传,这样您就不必每次都上传整个文件。
猜你喜欢
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多