我需要能够监视和读取MS Exchange Server(我公司内部)上特定邮箱的电子邮件。我还需要能够阅读发件人的电子邮件地址,主题,邮件正文并下载附件(如果有)。
使用C#(或VB.NET)执行此操作的最佳方法是什么?
一团糟。Microsoft正式不支持通过 .NET互操作DLL的MAPI或CDO- 看起来可以正常工作,但是由于内存模型不同,存在内存泄漏问题。您可以使用CDOEX,但这只能在Exchange服务器本身上运行,而不能在远程运行;无用。您可以与Outlook互操作,但是现在您已经对Outlook有了依赖性。过度杀伤力。最后,您可以使用Exchange 2003的WebDAV支持,但是WebDAV很复杂,.NET对其的内置支持很差,并且(更糟的是)Exchange 2007 几乎完全放弃了 WebDAV的支持。
一个人做什么?我最终使用AfterLogic的IMAP组件通过IMAP与我的Exchange 2003服务器通信,并且最终运行良好。(我通常会寻找免费的或开放源代码的库,但是我发现所有.NET库都想要-特别是在涉及2003年IMAP实现的一些怪癖时- 这个库足够便宜,并且可以在第一个库中使用试试。我知道外面还有其他人。
但是,如果您的组织使用的是Exchange 2007,那么您很幸运。Exchange 2007附带了一个基于SOAP的Web服务接口,该接口最终提供了与Exchange服务器交互的统一的,独立于语言的方式。如果您可以使2007+成为必需,那么这绝对是可行的方法。(对我来说,可悲的是,我的公司制定了“但2003年没有失败”的政策。)
如果您需要桥接Exchange 2003和2007,则绝对可以使用IMAP或POP3。