EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒
发布时间:2020-12-15 04:37:56 所属栏目:百科 来源:网络整理
导读:摘要 在ews中提供了一种拉通知的方式获取服务端邮件的操作,通过这种方式客户端可以订阅该通知,在邮箱有变化的时候,可以收到通知。 工作方式 EWS 通知是在订阅的基础上处理的。通常是一个订阅每个邮箱,以及邮箱订阅中您可以订阅部分或全部文件夹。您决定
摘要在ews中提供了一种拉通知的方式获取服务端邮件的操作,通过这种方式客户端可以订阅该通知,在邮箱有变化的时候,可以收到通知。 工作方式EWS 通知是在订阅的基础上处理的。通常是一个订阅每个邮箱,以及邮箱订阅中您可以订阅部分或全部文件夹。您决定何种通知订阅 (流、 请求或推) 以及哪种类型的事件您想要接收 (NewMail,创建、 删除、 修改日期,等等),然后创建订阅。EWS 事件然后发送以异步方式从邮箱服务器到客户端。 EWS 流式处理通知 EWS 拉通知 一个例子 ExchangeService service = Main(= +==
</span><span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> mytimer_Elapsed(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender,ElapsedEventArgs e)
{
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">running</span><span style="color: #800000;">"</span><span style="color: #000000;">);
GetPullNotifications();
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> SubscribePullNotifications(FolderId folderId)
{
service.Url </span>= <span style="color: #0000ff;">new</span> Uri(<span style="color: #800000;">"</span><span style="color: #800000;">https://mail.testsssss.com/ews/exchange.asmx</span><span style="color: #800000;">"</span><span style="color: #000000;">);
service.Credentials </span>= <span style="color: #0000ff;">new</span> NetworkCredential(<span style="color: #800000;">"</span><span style="color: #800000;">www</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">12345</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">domain</span><span style="color: #800000;">"</span><span style="color: #000000;">);
Subscription </span>= service.SubscribeToPullNotifications(<span style="color: #0000ff;">new</span> FolderId[] { folderId },<span style="color: #800080;">1440</span>,<span style="color: #0000ff;">null</span><span style="color: #000000;">,EventType.NewMail,EventType.Created,EventType.Deleted);
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> GetPullNotifications()
{
IEnumerable</span><ItemEvent> itemEvents =<span style="color: #000000;"> Subscription.GetEvents().ItemEvents;
</span><span style="color: #0000ff;">foreach</span> (ItemEvent itemEvent <span style="color: #0000ff;">in</span><span style="color: #000000;"> itemEvents)
{
</span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (itemEvent.EventType)
{
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Copied:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Copied</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Created:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Created</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Deleted:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Deleted</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.FreeBusyChanged:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">FreeBusyChanged</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Modified:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Modified</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Moved:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Moved</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.NewMail:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">New mail</span><span style="color: #800000;">"</span><span style="color: #000000;">);
Console.WriteLine(itemEvent.ItemId.UniqueId);
EmailMessage emailMessage </span>=<span style="color: #000000;"> EmailMessage.Bind(service,itemEvent.ItemId.UniqueId);
Console.WriteLine(emailMessage.Subject);
Console.WriteLine(emailMessage.Body.Text);
Console.WriteLine(emailMessage.From);
Console.WriteLine(emailMessage.DateTimeReceived);
Console.WriteLine(</span><span style="color: #0000ff;">string</span>.Join(<span style="color: #800000;">"</span><span style="color: #800000;">;</span><span style="color: #800000;">"</span>,emailMessage.ToRecipients.Select(x =><span style="color: #000000;"> x.Address).ToArray()));
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">case</span><span style="color: #000000;"> EventType.Status:
Console.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">Status</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">default</span><span style="color: #000000;">:
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
}
}
}
}
} 开始监听 当收到新的邮件时,eventType为NewMail,可以根据uniqueid查询当前邮件详情。 参考资料 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |