C# 获取独特的电子邮件EWS管理的Web API

C# 获取独特的电子邮件EWS管理的Web API,c#,ews-managed-api,C#,Ews Managed Api,我正在尝试使用以下代码从Exchange服务器检索电子邮件: ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.Credentials = new WebCredentials("username", "somepassword"); service.TraceEnabled = true; service.Trace

我正在尝试使用以下代码从Exchange服务器检索电子邮件:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

        service.Credentials = new WebCredentials("username", "somepassword");

        service.TraceEnabled = true;
        service.TraceFlags = TraceFlags.All;

        service.AutodiscoverUrl("username", RedirectionUrlValidationCallback);


        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
        ServiceResponseCollection<GetItemResponse> items =
            service.BindToItems(findResults.Select(item => item.Id), new PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.From, EmailMessageSchema.ToRecipients));
        return items.Select(item =>
        {
            return new MailItem()
            {
                From = ((Microsoft.Exchange.WebServices.Data.EmailAddress)item.Item[EmailMessageSchema.From]).Address,
                Recipients = ((Microsoft.Exchange.WebServices.Data.EmailAddressCollection)item.Item[EmailMessageSchema.ToRecipients]).Select(recipient => recipient.Address).ToArray(),
                Subject = item.Item.Subject,
                Body = item.Item.Body.ToString(),
            };
        }).ToArray();
ExchangeService服务=新的ExchangeService(ExchangeVersion.Exchange2007\u SP1);
service.Credentials=新的WebCredentials(“用户名”、“某些密码”);
service.TraceEnabled=true;
service.TraceFlags=TraceFlags.All;
AutodiscoverUrl(“用户名”,RedirectionUrlValidationCallback);
FindItemsResults findResults=service.FindItems(WellKnownFolderName.Inbox,新项目视图(10));
服务响应收集项目=
BindToItems(findResults.Select(item=>item.Id),newpropertyset(BasePropertySet.FirstClassProperties,EmailMessageSchema.From,EmailMessageSchema.ToRecipients));
返回项目。选择(项目=>
{
返回新邮件项()
{
From=((Microsoft.Exchange.WebServices.Data.EmailAddress)item.item[EmailMessageSchema.From])。地址,
Recipients=((Microsoft.Exchange.WebServices.Data.EmailAddressCollection)item.item[EmailMessageSchema.ToRecipients])。选择(recipient=>recipient.Address).ToArray(),
主题=item.item.Subject,
Body=item.item.Body.ToString(),
};
}).ToArray();
我需要在数据库中保存主题和正文。但我需要独特的电子邮件,因为我不想在我的系统上显示多余的电子邮件


这意味着每次我将系统与exchange服务器同步时,我都会收到尚未同步的新电子邮件。

如果我没有弄错,您可以将EWS获得的电子邮件保存在数据库中。 后来你又收到了邮件,所以你收到了你已经收到的邮件和新邮件

使用时间戳如何? 同时获取邮件项目的CreationTime(或ReceivedTime),并将其保存在数据库中

之后,仅在EWS中搜索CreationTime(或ReceivedTime)晚于数据库中最后一次CreationTime(或ReceivedTime)的邮件项目。
所以你只收到新邮件

一种可能的解决方案是通过调用

emailMessage.Delete(DeleteMode.MoveToDeletedItems);

请注意,我不必在收件箱中保留已处理电子邮件的副本,因此这对我来说是一个可行的解决方案。如果出于某种原因,您必须在收件箱文件夹中保留一份副本,这对您不起作用。

是的,我需要将电子邮件保存在我的数据库中。。。。有没有像电子邮件的唯一ID这样的方法,我可以从中区分一封电子邮件和另一封电子邮件可能会有帮助:您好,我需要将电子邮件保存在我的收件箱文件夹中,不想删除它们。