C#使用Exchange Web Services (EWS)通过流媒体订阅方式获取邮件列表、信息

代码

需要引用Microsoft.Exchange.WebServices包,using Microsoft.Exchange.WebServices.Data;

public class EWSConnection
    {
        public static void doWork()
        {
            // 设置Exchange服务器URL和用户凭据
            string exchangeUrl = "https://mail.xxx.com/EWS/Exchange.asmx";
            string username = ""; //Exchange账号
            string password = "";//账号密码

            // 创建ExchangeService实例
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
            service.Url = new Uri(exchangeUrl);
            service.Credentials = new WebCredentials(username, password);

            //获取发件箱文件夹
            FolderId sentItemsFolderId = new FolderId(WellKnownFolderName.SentItems, username);
            Folder sentItemsFolder = Folder.Bind(service, sentItemsFolderId);

            // 创建订阅
            StreamingSubscription subscription = service.SubscribeToStreamingNotifications(new FolderId[] { sentItemsFolder.Id }, EventType.Created);

            // 设置订阅参数
            StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service, 30);
            connection.AddSubscription(subscription);
            connection.OnNotificationEvent += OnNotificationEvent;
            connection.Open();
        }
        private static void OnNotificationEvent(object sender, NotificationEventArgs args)
        {
            foreach (var notification in args.Events)
            {
                if (notification is ItemEvent itemEvent && itemEvent.EventType == EventType.Created)
                {
                    EmailMessage emailMessage = EmailMessage.Bind(args.Subscription.Service, itemEvent.ItemId);

                    Console.WriteLine("发件箱中的邮件:");
                    Console.WriteLine("主题:" + emailMessage.Subject);
                    Console.WriteLine("发件人:" + emailMessage.From.Name);
                    Console.WriteLine("时间:" + emailMessage.DateTimeSent);

                    // 获取Message-ID
                    string messageId = emailMessage.InternetMessageHeaders.Find("Message-ID").Value;
                    Console.WriteLine("Message-ID:" + messageId);

                    Console.WriteLine("--------------------------");
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小步快跑-

如有帮到您,给个赞赏(^.^)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值