c# - 在 C# 中阅读 MS Exchange 电子邮件

标签 c# email exchange-server mapi

我需要能够监视和读取来自 MS Exchange 服务器(我公司内部)上特定邮箱的电子邮件。我还需要能够读取发件人的电子邮件地址、主题、邮件正文并下载附件(如果有)。

使用 C#(或 VB.NET)执行此操作的最佳方法是什么?

最佳答案

这是一团糟。通过 .NET 互操作 DLL 的 MAPI 或 CDO 是 officially unsupported by Microsoft --它看起来工作正常,但由于内存模型不同,存在内存泄漏问题。您可以使用 CDOEX,但它只能在 Exchange 服务器本身上运行,不能远程运行;无用。您可以与 Outlook 互操作,但现在您只是依赖于 Outlook;矫枉过正。最后,您可以使用 Exchange 2003's WebDAV support ,但 WebDAV 很复杂,.NET 对它的内置支持很差,而且(雪上加霜)Exchange 2007 几乎完全放弃了 WebDAV 支持。

男人要做什么?我最终使用了 AfterLogic's IMAP component通过 IMAP 与我的 Exchange 2003 服务器通信,结果运行良好。 (我通常会寻找免费或开源库,但我发现所有 .NET 库都需要——尤其是当涉及到 2003 年 IMAP 实现的一些怪癖时——而且这个库足够便宜并且在第一个上工作试试看。我知道外面还有其他人。)

但是,如果您的组织使用 Exchange 2007,那么您很幸运。 Exchange 2007 comes with a SOAP-based Web service interface最终提供了一种与 Exchange 服务器交互的统一的、独立于语言的方式。如果您可以将 2007+ 作为一项要求,那么这绝对是正确的选择。 (对我来说可悲的是,我的公司有一个“但 2003 年未被破坏”的政策。)

如果您需要桥接 Exchange 2003 和 2007,IMAP 或 POP3 绝对是最佳选择。

关于c# - 在 C# 中阅读 MS Exchange 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652549/

相关文章:

c# - EF 中 IDatabaseInitializer 的正确用法是什么?

c# - 如果有任何格式,我该如何格式化以仅包括小数

java - 通过 JavaMail 发送到 gmail 时的 TLS 问题

c# - 如何在 ASP.NET MVC 中的 View 上只显示 DATE 部分

asp.net - 有没有办法使用 ASP.NET 发送电子邮件通知而不使用凭据?

delphi - 使用 MS Outlook 发送电子邮件不添加签名

c++ - MAPI 帐户的服务器名称

java - 使用 Exchange Web 服务 Java API 下载附件?

java - Exchange 日历、创建约会和唯一 ID

c# - 带有 using 子句的 SqlConnection - 在连接上调用关闭