EWS 流通知订阅邮件

EWS 流通知订阅邮件,第1张

概述摘要查找一些关于流通订阅邮件的资料,这里整理一下。核心代码块using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Timers;using Exchange101;using Microsoft.Exchange.WebServices.Data;namespace Exchange101{// This sample is for demonstration purposes only. Before you run this sample, make sure that the code meets the coding requirements of your organization.class Notifications{static ExchangeService service = Service.ConnectToService(UserDataFromConsole.GetUserData(), new TraceListener());private static AutoResetEvent Signal;static void Main(string[] args){SetStreamingNotifications(service);// Wait for the application to exitSignal = new AutoResetEvent(false);Signal.WaitOne();}static void SetStreamingNotifications(ExchangeService service){// Subscribe to streaming notifications on the Inbox folder, and listen// for "NewMail", "Created", and "Deleted" events.StreamingSubscription streamingsubscription = service.SubscribeToStreamingNotifications(new FolderId[] { WellKnownFolderName.Inbox },EventType.NewMail,EventType.Created,EventType.Deleted);StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service, 1);connection.AddSubscription(streamingsubscription);// Delegate event handlers.connection.OnNotificationEvent +=new StreamingSubscriptionConnection.NotificationEventDelegate(OnEvent);connection.OnSubscriptionError +=new StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnError);connection.OnDisconnect +=new StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnDisconnect);connection.Open();Console.WriteLine("--------- StreamSubscription event -------");}static private void OnDisconnect(object sender, SubscriptionErrorEventArgs args){// Cast the sender as a StreamingSubscriptionConnection object.StreamingSubscriptionConnection connection = (StreamingSubscriptionConnection)sender;// Ask the user if they want to reconnect or close the subscription.ConsoleKeyInfo cki;Console.WriteLine("The connection to the subscription is disconnected.");Console.WriteLine("Do you want to reconnect to the subscription? Y/N");while (true){cki = Console.ReadKey(true);{if (cki.Key == ConsoleKey.Y){connection.Open();Console.WriteLine("Connection open.");Console.WriteLine("rn");break;}else if (cki.Key == ConsoleKey.N){Signal.Set();bool isOpen = connection.IsOpen;if (isOpen == true){// Close the connectionconnection.Close();}else{break;}}}}}static void OnEvent(object sender, NotificationEventArgs args){StreamingSubscription subscription = args.Subscription;// Loop through all item-related events.foreach (NotificationEvent notification in args.Events){switch (notification.EventType){case EventType.NewMail:Console.WriteLine("n-------------Mail created:-------------");break;case EventType.Created:Console.WriteLine("n-------------Item or folder created:-------------");break;case EventType.Deleted:Console.WriteLine("n-------------Item or folder deleted:-------------");break;}// Display the notification identifier.if (notification is ItemEvent){// The NotificationEvent for an email message is an ItemEvent.ItemEvent itemEvent = (ItemEvent)notification;Console.WriteLine("nItemId: " + itemEvent.ItemId.UniqueId);}else{// The NotificationEvent for a folder is a FolderEvent.FolderEvent folderEvent = (FolderEvent)notification;Console.WriteLine("nFolderId: " + folderEvent.FolderId.UniqueId);}}}static void OnError(object sender, SubscriptionErrorEventArgs args){// Handle error conditions.Exception e = args.Exception;Console.WriteLine("n-------------Error ---" + e.Message + "-------------");}}}相关资料https://msdn.microsoft.com/en-us/library/office/dn458791(v=exchg.150).aspxhttps://blogs.msdn.microsoft.com/emeamsgdev/2013/04/16/ews-streaming-notification-sample/ 摘要

查找一些关于流通知订阅邮件的资料,这里整理一下。

核心代码块<span >namespace<span > Exchange101
{
<span >//
<span > This sample is for demonstration purposes only. Before you run this sample,make sure that the code meets the Coding requirements of your organization.

<span >class
<span > Notifications
{
<span >static
ExchangeService service = Service.ConnectToService(UserDataFromConsole.GetUserData(),<span >new
<span > TraceListener());
<span >private
<span >static
<span > autoresetEvent Signal;

    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;static</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a></span> Main(<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;string</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;[] args)    {        SetStreamingNotifications(service);        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Wait for the app<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>cation to exit</span>        Signal = <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span> <a href="https://m.jb51.cc/tag/auto/" target="_blank" >auto</a><a href="https://m.jb51.cc/tag/reset/" target="_blank" >reset</a>Event(<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;false</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);        Signal.WaitOne();    }    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;static</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a></span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; SetStreamingNotifications(ExchangeService service)    {        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Subscribe to streaming notifications on the In<a href="https://www.jb51.cc/tag/Box/" target="_blank" >Box</a> f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der,and <a href="https://m.jb51.cc/tag/List/" target="_blank" >List</a>en         </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; for "NewMail","Created",and "Deleted" events. </span>        StreamingSubscription streamingsubscription =<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; service.Subscrib<a href="https://www.jb51.cc/tag/eto/" target="_blank" >eto</a>StreamingNotifications(            </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; F<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>[] { WellK<a href="https://www.jb51.cc/tag/Now/" target="_blank" >Now</a>nF<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der<a href="https://m.jb51.cc/tag/name/" target="_blank" >name</a>.In<a href="https://www.jb51.cc/tag/Box/" target="_blank" >Box</a> },EventType.NewMail,EventType.Created,EventType.Deleted);        StreamingSubscriptionConnection connection </span>= <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span> StreamingSubscriptionConnection(service,<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800080;"&gt;1</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);        connection.AddSubscription(streamingsubscription);        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Delegate event handlers. </span>        connection.OnNotificationEvent +=            <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; StreamingSubscriptionConnection.NotificationEventDelegate(OnEvent);        connection.OnSubscriptionError </span>+=            <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnError);        connection.On<a href="https://www.jb51.cc/tag/dis/" target="_blank" >dis</a>connect </span>+=            <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;new</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; StreamingSubscriptionConnection.SubscriptionErrorDelegate(On<a href="https://www.jb51.cc/tag/dis/" target="_blank" >dis</a>connect);        connection.<a href="https://www.jb51.cc/tag/open/" target="_blank" >open()</a>;        Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;--------- StreamSubscription event -------</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);    }    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;static</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;private</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a></span> On<a href="https://www.jb51.cc/tag/dis/" target="_blank" >dis</a>connect(<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;object</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; sender,SubscriptionErrorEventArgs args)    {        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Cast the sender as a StreamingSubscriptionConnection object.           </span>        StreamingSubscriptionConnection connection =<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; (StreamingSubscriptionConnection)sender;        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Ask the user if t<a href="https://www.jb51.cc/tag/hey/" target="_blank" >hey</a> want to reconnect or close the subscription. </span>

<span > ConsoleKeyInfo cki;
Console.Writeline(<span >"<span >The connection to the subscription is disconnected.<span >"<span >);
Console.Writeline(<span >"<span >Do you want to reconnect to the subscription? Y/N<span >"<span >);
<span >while (<span >true<span >)
{
cki = Console.ReadKey(<span >true<span >);
{
<span >if (cki.Key ==<span > ConsoleKey.Y)
{
connection.open();
Console.Writeline(<span >"<span >Connection open.<span >"<span >);
Console.Writeline(<span >"<span >\r\n<span >"<span >);
<span >break<span >;
}
<span >else <span >if (cki.Key ==<span > ConsoleKey.N)
{
Signal.Set();
<span >bool isOpen =<span > connection.IsOpen;

                    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;if</span> (isOpen == <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;true</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;)                    {                    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Close the connection</span>

<span > connection.Close();
}
<span >else<span >
{
<span >break<span >;
}
}
}
}

    }    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;static</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a></span> OnEvent(<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;object</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; sender,NotificationEventArgs args)    {        StreamingSubscription subscription </span>=<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; args.Subscription;        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Loop through all item-related events. </span>        <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;foreach</span> (NotificationEvent notification <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;in</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; args.Events)        {            </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;switch</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; (notification.EventType)            {                </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;case</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; EventType.NewMail:                    Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\n-------------Mail created:-------------</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);                    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;break</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;;                </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;case</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; EventType.Created:                    Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\n-------------Item or f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der created:-------------</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);                    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;break</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;;                </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;case</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; EventType.Deleted:                    Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\n-------------Item or f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der deleted:-------------</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);                    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;break</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;;            }            </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; <a href="https://www.jb51.cc/tag/dis/" target="_blank" >dis</a>play the notification <a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>entif<a href="https://m.jb51.cc/tag/IE/" target="_blank" >IE</a>r. </span>            <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;if</span> (notification <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;is</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; ItemEvent)            {                </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; The NotificationEvent for an email message is an ItemEvent. </span>                ItemEvent itemEvent =<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; (ItemEvent)notification;                Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\nItem<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>: </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span> +<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; itemEvent.Item<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>.Unique<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>);            }            </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;else</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;            {                </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; The NotificationEvent for a f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der is a F<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>derEvent. </span>                F<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>derEvent f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>derEvent =<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; (F<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>derEvent)notification;                Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\nF<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>: </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span> +<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; f<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>derEvent.F<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>der<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>.Unique<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a>);            }        }    }    </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;static</span> <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;vo<a href="https://m.jb51.cc/tag/ID/" target="_blank" >ID</a></span> OnError(<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #0000ff;"&gt;object</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; sender,SubscriptionErrorEventArgs args)    {        </span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt;//</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #008000;"&gt; Handle error conditions. </span>        Exception e =<span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt; args.Exception;        Cons<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>e.Write<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ne(</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;\n-------------Error ---</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span> + e.Message + <span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;-------------</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #800000;"&gt;"</span><span https://m.jb51.cc/tag/color/" target="_blank" >color</a>: #000000;"&gt;);    } }

}

相关资料

总结

以上是内存溢出为你收集整理的EWS 流通知订阅邮件全部内容,希望文章能够帮你解决EWS 流通知订阅邮件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1263979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存