首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft邮件邮件中附件的3MB限制是否累积?

Microsoft邮件邮件中附件的3MB限制是否累积?
EN

Stack Overflow用户
提问于 2020-09-28 22:05:09
回答 2查看 3.7K关注 0票数 2

我已经使用微软图形.NET客户端库发送邮件消息很长一段时间,它一直工作很好,但今天我注意到一个非常奇怪的问题。

到今天为止,这里是附件的基本规则。

  • 如果文件大小小于3MB,请在Outlook项的“附件”导航属性上进行一次发布;请参见如何对消息或事件执行此操作。成功的POST响应包括文件附件的ID。
  • 如果文件大小在3MB到150 3MB之间,则创建一个上传会话,并反复使用PUT上传文件的字节范围,直到您上传完整个文件。最终成功的PUT响应中的头包含一个带有附件ID.

的URL。

https://learn.microsoft.com/en-us/graph/outlook-large-attachments?tabs=http

太简单了。如果附件小于3MB,我只需将其包含在消息中即可。如果是更多的话,我会创建一个上传会话。

现在是问题所在。如果有多个附件加到超过此限制的总大小,我将收到以下消息.

支持的最大请求长度为4MB。

为了解决这个问题,在达到累积限制之后,我开始为其余的文件上传会话。但是,我随后收到以下错误消息.

消息:附件大小必须大于最小大小。

这是因为上传会话有一个最小的大小。

快速重述:当总数超过最大限制时,我不能上传多个小附件。我不能上传他们与一个会话,因为这是少于最低限度。有人注意到这个问题了吗?

使用v3.6

EN

回答 2

Stack Overflow用户

发布于 2021-05-18 11:00:48

以下代码适用于总计>4 Mb:

代码语言:javascript
复制
Message draft = await _GraphClient
                        .Users[UserPrincipalNameOrId]
                        .MailFolders
                        .Drafts
                        .Messages
                        .Request()
                        //.WithMaxRetry(5)
                        .AddAsync(emailToSend);

foreach (var attachment in Attachments)
{
    if (attachment.FullPath != null)
    {
        FileInfo f = new FileInfo(attachment.FullPath);
        if (f.Length < MINIMUM_SIZE_FOR_UPLOAD_SESSION) // 3 Mo
        {
            string mimeType = MimeTypes.MimeTypeMap.GetMimeType(f.Extension); 
            FileAttachment fileAttachment = new FileAttachment
            {
                ODataType = "#microsoft.graph.fileAttachment",
                ContentBytes = System.IO.File.ReadAllBytes(attachment.FullPath),
                ContentType = mimeType,
                ContentId = f.Name, 
                Name = f.Name
            };
            await _GraphClient
                    .Users[UserPrincipalNameOrId]
                    .Messages[draft.Id]
                    .Attachments
                    .Request()
                    .AddAsync(fileAttachment);
        }
        else
        {
            // Attachments >= 3 Mb
            using (var filestream = System.IO.File.Open(attachment.FullPath, System.IO.FileMode.Open, FileAccess.Read, FileShare.None))
            {
                var attachmentItem = new AttachmentItem
                {
                    AttachmentType = AttachmentType.File,
                    Name = Path.GetFileName(filestream.Name),
                    Size = filestream.Length
                };

                var uploadSession = await _GraphClient
                        .Users[UserPrincipalNameOrId]
                        .Messages[draft.Id]
                        .Attachments
                        .CreateUploadSession(attachmentItem)
                        .Request()
                        .PostAsync();

                var maxSliceSize = 320 * 1024; // 320 KB - Change this to your slice size. 5MB is the default.
                var largeFileUploadTask = new LargeFileUploadTask<FileAttachment>(uploadSession, filestream, maxSliceSize);

                // upload away with relevant callback
                IProgress<long> progressCallback = new Progress<long>(prog => { });
                try
                {
                    var uploadResult = await largeFileUploadTask.UploadAsync(progressCallback);
                    if (!uploadResult.UploadSucceeded)
                    {
                        // error
                    }
                }
                catch (ServiceException e)
                {
                    // exception
                }
            } // using()
        }
    }
}

await _GraphClient
        .Users[UserPrincipalNameOrId]
        .Messages[draft.Id]
        .Send()
        .Request()
        .WithMaxRetry(5)
        .PostAsync();
票数 3
EN

Stack Overflow用户

发布于 2020-10-09 11:05:40

不确定这能不能用。但是您可以尝试将电子邮件保存为模板,并使用API将附件添加到模板中。然后发送模板。

看起来这个限制是对电话大小的限制,而不是对邮件大小的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64110229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档