Microsoft graph api Microsoft Graph API邮件中附件的3 MB限制是否累计?

Microsoft graph api Microsoft Graph API邮件中附件的3 MB限制是否累计?,microsoft-graph-api,microsoft-graph-mail,Microsoft Graph Api,Microsoft Graph Mail,我使用Microsoft Graph.NET客户端库发送邮件已经有相当一段时间了,它工作得很好,但今天我注意到一个非常奇怪的问题 从今天起,这里是附件的基本规则 如果文件大小小于3MB,请在附件上发布一篇文章 Outlook项目的导航属性;看一看如何为一个孩子做这件事 消息或事件。成功的POST响应包括ID 文件附件的 如果文件大小介于3MB和150MB之间, 创建上载会话,并迭代使用PUT上载 在上载整个文件之前,请保留文件的字节数。标题 在最后一个成功的PUT响应中,包含一个带有 附件ID

我使用Microsoft Graph.NET客户端库发送邮件已经有相当一段时间了,它工作得很好,但今天我注意到一个非常奇怪的问题

从今天起,这里是附件的基本规则

  • 如果文件大小小于3MB,请在附件上发布一篇文章 Outlook项目的导航属性;看一看如何为一个孩子做这件事 消息或事件。成功的POST响应包括ID 文件附件的
  • 如果文件大小介于3MB和150MB之间, 创建上载会话,并迭代使用PUT上载 在上载整个文件之前,请保留文件的字节数。标题 在最后一个成功的PUT响应中,包含一个带有 附件ID

很简单。如果附件小于3MB,我只需将其包含在邮件中。如果超过了,我会创建一个上传会话

现在来看问题。如果有多个附件的总大小超过该限制,我将收到以下消息

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

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

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

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

快速回顾:当总数超过最大限制时,我无法上载多个小附件。我无法在会话中上载它们,因为它小于最小限制。有人注意到这个问题吗?


正在使用Microsoft Graph Client Library v3.6

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


看起来限制是对呼叫大小的限制,而不是电子邮件大小的限制。

以下代码适用于总容量>4 Mb的情况:

消息草稿=等待\u图形客户端
.Users[UserPrincipalNameOrId]
.邮件文件夹
.草稿
.留言
.Request()
//.WithMaxRetry(5)
.AddAsync(emailToSend);
foreach(附件中的var附件)
{
如果(attachment.FullPath!=null)
{
FileInfo f=新的FileInfo(attachment.FullPath);
if(f.Length<上传会话的最小大小)//3个月
{
字符串mimeType=MimeTypes.MimeTypeMap.GetMimeType(f.Extension);
FileAttachment FileAttachment=新文件附件
{
ODataType=“#microsoft.graph.fileAttachment”,
ContentBytes=System.IO.File.ReadAllBytes(attachment.FullPath),
ContentType=mimeType,
ContentId=f.名称,
Name=f.Name
};
等待图形客户端
.Users[UserPrincipalNameOrId]
.Messages[draft.Id]
.附件
.Request()
.AddAsync(文件附件);
}
其他的
{
//附件>=3 Mb
使用(var filestream=System.IO.File.Open(attachment.FullPath、System.IO.FileMode.Open、FileAccess.Read、FileShare.None))
{
var attachmentItem=新的attachmentItem
{
AttachmentType=AttachmentType.File,
Name=Path.GetFileName(filestream.Name),
Size=filestream.Length
};
var uploadSession=wait\u GraphClient
.Users[UserPrincipalNameOrId]
.Messages[draft.Id]
.附件
.CreateUploadSession(附件项)
.Request()
.PostAsync();
var maxSliceSize=320*1024;//320 KB-将其更改为您的切片大小。默认值为5MB。
var largeFileUploadTask=新的largeFileUploadTask(uploadSession、filestream、maxSliceSize);
//与相关回调一起上传
IProgress progressCallback=新进度(prog=>{});
尝试
{
var uploadResult=await largeFileUploadTask.UploadAsync(progressCallback);
如果(!uploadResult.UploadSuccessed)
{
//错误
}
}
捕获(服务异常e)
{
//例外情况
}
}//使用()
}
}
}
等待图形客户端
.Users[UserPrincipalNameOrId]
.Messages[draft.Id]
.Send()
.Request()
.WithMaxRetry(5)
.PostAsync();

(1)您能获取错误响应的响应id和时间戳吗?(2) 另外,请查看您是否可以与邮递员一起重新设置问题代码:BadRequest消息:支持的最大请求长度为4MB。内部错误:附加数据:日期:2020-09-29T19:20:04请求id:564706e7-9ea1-4b94-bc0c-b8f556ffd9caI未在POSTMAN中尝试,因为我可以使用.NET代码测试每个组合。谢谢,这个完全相同的代码已经运行了几个月,3天前才开始出现问题。所以我想知道他们是否是因为微软的原因而改变的。我希望Microsoft Graph团队中的某个人能够参与进来?您是否仍然能够重现这个问题。如果是,请向我们提供最新的准确requestid和时间戳。