如何使用C#读取传入邮件

我正在寻找一个允许我阅读收到的电子邮件的解决方案。 我现在想到的三种方法是:

  1. 创建解析电子邮件的电子邮件服务器
  2. 挂钩到现有的Exchange服务器
  3. 陷入已使用电子邮件帐户设置的Outlook

做这个的最好方式是什么? 一个人如何实施呢?

谢谢

如果您已经将Exchange服务器作为邮箱主机处理,我建议通过IMAP(首选)或POP访问来利用它。 最近我开发了一个解决方案,通过AfterLogic的MailBee.NET IMAP组件访问指定的邮箱,我认为值得推荐。 他们有标准的试用版和合理的价格。 此外,如果你走这条路线,POP或IMAP自动化足够灵活,可以与几乎任何邮箱服务器平台一起使用; 它不必限于Exchange环境。

还有免费的.NET IMAP组件也可以完成这项工作。 在我的有限研究中,我发现免费替代品并不完全符合我的所有要求,或者不是那么容易学习,但你的情况可能会有所不同。 为了完整起见,这里列出了我在决定在MailBee上花钱之前考虑的替代/免费IMAP库:

解决问题的第二部分……我最近的项目中的实现涉及编写一个引用MailBee.NET IMAP库的非常简单的控制台应用程序。 控制台应用程序具有标准配置文件,并接受命令行参数作为参数。 我们根据流程需要定义Windows计划任务以运行控制台应用程序。 我相信你可以通过其他方式做到这一点,但这是满足我们需求的最简单方法。

我知道这是一个较老的线程,但我想添加一个名为ImapX2的开源Imap库的链接: http ://imapx.codeplex.com/

我尝试了这个post中的大部分链接都取得了不同程度的成功,但我发现ImapX2库根据我的需要工作得最好。

使用现有的IMAP服务器和IMAP组件 。

在我看来,创建自己的IMAP服务器是一个很大的安全风险。

有免费的组件,但大多数都有国家字符和“非标准”电子邮件的问题…并没有任何支持(LumiSoft.Net已被放弃近2年)

using(Imap imap = new Imap()) { imap.Connect("imap.server.com"); imap.Login("user", "password"); imap.SelectInbox(); List uidList = imap.Search(Flag.Unseen); foreach (long uid in uidList) { IMail email = new MailBuilder() .CreateFromEml(imap.GetMessageByUID(uid)); Console.WriteLine(email.Subject); Console.WriteLine(email.Attachments.Count); } imap.Close(); } 

Mail.dll还包括SMTP组件和模板引擎,因此您可以轻松发送回复。

免责声明:我参与了这个商业产品的开发。