【发布时间】:2021-08-27 06:52:47
【问题描述】:
我们希望通过 C# 应用程序从 Office365 收件箱中检索电子邮件。 我们曾经使用 EWS 但想更改为 Graph。但是,如果我们通过 Graph 检索一封电子邮件,它所花费的时间是 EWS 的两倍(约 400 毫秒 vs 约 200 毫秒)。
这里是 EWS 代码:
ExchangeService service = <...>;
PropertySet properties = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.From,
EmailMessageSchema.DateTimeSent, EmailMessageSchema.Subject,
EmailMessageSchema.CcRecipients, EmailMessageSchema.BccRecipients,
EmailMessageSchema.Importance, EmailMessageSchema.ToRecipients,
EmailMessageSchema.Attachments, EmailMessageSchema.Size,
EmailMessageSchema.Sender, EmailMessageSchema.Body,
EmailSchema.MailComment, EmailSchema.MailImportance,
EmailSchema.MailMessageClass, EmailMessageSchema.DateTimeReceived,
EmailSchema.MailTransportHeader);
properties.RequestedBodyType = Microsoft.Exchange.WebServices.Data.BodyType.HTML;
EmailMessage mail = EmailMessage.Bind(service, "<mailid>", properties);
这是图表代码:
GraphServiceClient client = <...>;
Message msg = client
.Users["<user>"]
.Messages["<mailid>"]
.Request()
.Select("id,parentFolderId,isRead,from,sentDateTime,subject,ccRecipients,bccRecipients,attachments,importance,toRecipients,sender,body,receivedDateTime")
.Expand("microsoft.graph.message/attachments," +
"singleValueExtendedProperties($filter=Id eq 'Long 0xe08'" +
" or Id eq 'String 0x1a'" +
" or Id eq 'String 0x7d'" +
" or Id eq 'Integer 0x17'" +
" or Id eq 'String 0x3004')")
.GetAsync()
.Result;
为什么 Graph 比较慢?我们应该改变什么来让 Graph 像 EWS 一样高性能?
【问题讨论】:
-
当您在Graph Explorer 或 Postman 上执行相同的端点并看到相同的响应时间?
标签: c# microsoft-graph-api exchangewebservices microsoft-graph-mail