Nil*_*ers 1 c# exchange-server ews-managed-api
我使用EWS托管API在我的c#项目和我们的Exchange 2010服务器之间进行通信.我使用此代码从现在起和三天前收到收件箱中的所有邮件.
var ews = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ews.Credentials = new NetworkCredential(usr, psw, dmn);
ews.AutodiscoverUrl(url);
PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.RequestedBodyType = BodyType.Text;
ItemView view = new ItemView(int.MaxValue);
FindItemsResults<Item> findResults;
view.PropertySet = itempropertyset;
do
{
findResults = ews.FindItems(WellKnownFolderName.Inbox, view);
foreach (Item item in findResults.Items)
{
if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue;
item.Load(itempropertyset);
var message = EmailMessage.Bind(ews, item.Id,
new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments));
string to = message.ToRecipients[0].Address.ToLower();
string body = item.Body;
}
view.Offset += findResults.TotalCount;
} while (findResults.MoreAvailable);
Run Code Online (Sandbox Code Playgroud)
现在问题.我想改进这一行, if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue;因为当我使用它时,api从收件箱中获取所有消息,如果它比旧的那么三天就继续.我想在代码中先前指定此过滤器,因此api不必处理所有消息.
小智 11
如果我正确理解了问题,这应该可行.您可以在此处查看所有可用的搜索过滤器: EWS搜索过滤器
ItemView view = new ItemView(int.MaxValue);
FindItemsResults<Item> findResults;
view.PropertySet = itempropertyset;
SearchFilter searchFilter =
new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, DateTime.Now.AddDays(-3));
findResults = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6770 次 |
| 最近记录: |