Exchange Web Service (EWS) API 使用笔记
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
有时候我们需要使用程序来进行收发邮件, 传统的POP3/SMTP/IMAP等协议也正广泛的被使用着,有关这些协议的收发邮件代码网上一抓一大把~ 如果要用这些协议可以去别处看看.
我这里要谈的是使用Microsoft Exchange Sever来进行邮件的收发.
通过网上查找资料我找到了微软官方的Exchange Server Developer Center, 从中得知了可以使用Microsoft Exchange Web Services Managed API来进行Exchange Server的交互. 你可以在这里下载到当前的最新1.1版本.
下载时有两个文件,根据你的实际情况选择即可:
Instructions
For x64 (64-bit) computers, download and run EwsManagedApi.msi
For x86 (32-bit) computers, download and run EwsManagedApi32.msi
安装之后的安装目录如图:
要使用EWS, 你需要将Microsoft.Exchange.WebServices.dll引用到你的项目之中.
一些基本的使用可以阅读GettingStarted.doc文件,里面说的比较清楚.
英文不好的同学可以查看这些篇文章
来自博客园的这两篇文章基本是对于官方GettingStarted.doc文件的翻译.
但是在我的应用中, 我需要读取所有在Inbox(收件箱)里的新邮件, 而已读邮件将被我忽略掉, 在读到新邮件后经过处理再将其标记为已读. 在示例代码中给出的读取Inbox中的邮件功能显然不能满足我的要求.
经过调研,写出如下代码已实现目标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//ExchangeService版本为2007SP1 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); //参数是用户名,密码,域 service.Credentials = new WebCredentials(Info.UserName, Info.Password, Info.Domain); //给出Exchange Server的URL http://xxxxxxx service.Url = new Uri(Info.SeverUrl); //你自己的邮件地址 xxx@xxx.xxx service.AutodiscoverUrl(Info.Email); //创建过滤器, 条件为邮件未读. SearchFilter sf = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false); //查找Inbox,加入过滤器条件,结果10条 FindItemsResults<item> findResults = service.FindItems( WellKnownFolderName.Inbox, sf, new ItemView(10)); foreach (Item item in findResults.Items) { EmailMessage email = EmailMessage.Bind(service, item.Id); if (!email.IsRead) { Console.WriteLine(email.Body); //标记为已读 email.IsRead = true; //将对邮件的改动提交到服务器 email.Update(ConflictResolutionMode.AlwaysOverwrite); } }</item> |
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=803