簡體   English   中英

如何從EWS交換服務器訪問特定電子郵件

[英]How to access specific email from EWS exchange server

我正在嘗試使用C#從EWS獲取特定的電子郵件,但是找不到識別特定電子郵件的方法。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
            service.Credentials = new WebCredentials(myemail, password);
            service.UseDefaultCredentials = false;
            service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
            ItemView itemsView = new ItemView(5);
            string querystring = "Kind:email";                

            FindItemsResults<Item> itemResults = service.FindItems(WellKnownFolderName.Inbox, querystring, view: itemsView);

FindItems方法根據查詢字符串提供電子郵件。 我將EmailMessage.InternetMessageIdEmailMessage.Id以及主題等詳細信息保存在數據庫中。 就我而言,我的電子郵件主題可能相同,但正文內容幾乎沒有差異。

稍后,基於用戶操作,我想從交換服務器獲取特定的電子郵件。 有什么我可以使用和獲取基於EmailMessage.InternetMessageIdEmailMessage.Id電子郵件的方法嗎? 這些ID是否可靠? 我在文檔中找不到方法。 目前,我正在考慮根據主題閱讀電子郵件,然后根據EmailMessage.Id.UniqueId過濾結果

有什么好的替代方法可以從交換服務器獲取特定的電子郵件嗎?

IntenetMessageId應該是唯一的,但不能保證一定會因為設置ID的不同進程的數量而異。

如果要基於InternetMessageId獲取特定消息,則需要使用Extended屬性,而不要使用強類型的屬性,例如

  String MessageID = "<blah@1223434556com">"
  ItemView ivew = new ItemView(3);
  service.TraceEnabled = true;
  ExtendedPropertyDefinition PidTagInternetMessageId = new ExtendedPropertyDefinition(4149, MapiPropertyType.String);
  SearchFilter sf = new SearchFilter.IsEqualTo(PidTagInternetMessageId, MessageID);
  FindItemsResults<Item> iCol = service.FindItems(WellKnownFolderName.Inbox, sf, ivew);

  foreach (Item item in iCol.Items)
  {
    Console.WriteLine(item.Subject);
  }

您可以使用https://docs.microsoft.com/zh-cn/exchange/client-developer/exchange-web-services/how-to-export-items-by-using-ews-將消息導出到EML文件。 作為交換

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM