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

时间:2011-01-06 12:21:53

标签: c# email email-integration mail-server

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

  1. 创建解析电子邮件的电子邮件服务器
  2. 挂钩到现有的Exchange服务器
  3. 挂入已使用电子邮件帐户设置的Outlook
  4. 最好的方法是什么?一个人如何实施呢?

    由于

3 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:5)

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

我尝试了这个帖子中的大部分链接都取得了不同程度的成功,但我发现ImapX2库可以根据我的需要发挥最佳效果。

答案 2 :(得分:2)

使用现有的IMAP服务器和IMAP component

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

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

using(Imap imap = new Imap())
{
    imap.Connect("imap.server.com");
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> 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组件和template engine,因此您可以轻松发送回复。

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