在C#中访问Imap [关闭]


112

是否存在内置方法来访问C#中的Imap服务器(使用SSL),还是有一个不错的免费库?



7
不。您发布的链接与专门用于Gmail的IMAP相关。但是,该帖子不是。

72
在说/将问题标记为重复项时,请多加注意。我生病看到的“重复:[链接]无处不在很多其他环节都不能回答什么时间。‘复制器’想反正要知道,无论是同样的问题还是不行!
βӔḺṪẶⱫŌŔ

7
问题已解决,所以我不能将其添加为答案:github.com/jstedfast/MailKit似乎是一个不错的选择,并且是一个活跃的项目。
罗里2015年

4
将有用的问题标记为非建设性的确实不是建设性的……
Robert J

Answers:


90

我一直在寻找IMAP解决方案已有一段时间,在尝试了很多之后,我将使用AE.Net.Mail

您可以通过转到“代码”标签并单击小的“下载”图标来下载代码。由于作者不提供任何预建下载,因此您必须自己编译。(我相信您可以通过NuGet获得它)。bin /文件夹中不再有.dll。

没有文档,我认为这是一个缺点,但是我可以通过查看源代码(是开放源代码!)并使用Intellisense来进行整理。以下代码专门连接到Gmail的IMAP服务器:

// Connect to the IMAP server. The 'true' parameter specifies to use SSL
// which is important (for Gmail at least)
ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass",
                ImapClient.AuthMethods.Login, 993, true);
// Select a mailbox. Case-insensitive
ic.SelectMailbox("INBOX");
Console.WriteLine(ic.GetMessageCount());
// Get the first *11* messages. 0 is the first message;
// and it also includes the 10th message, which is really the eleventh ;)
// MailMessage represents, well, a message in your mailbox
MailMessage[] mm = ic.GetMessages(0, 10);
foreach (MailMessage m in mm)
{
    Console.WriteLine(m.Subject);
}
// Probably wiser to use a using statement
ic.Dispose();

确保您在Github页面上签出最新版本和一些更好的代码示例。


1
看起来真是太容易了,哈哈。我要检查一下!
bentr 2011年

4
@jase-你是对的!我不确定到底是什么问题(好像是属性文件?),但是我可以通过将所有相关文件复制到新的类项目中来使其编译。无论如何,我都会为您构建库,因此您可以将它们作为.dll引用添加到您的项目中。dl.dropbox.com/u/8037514/AE.Net.Mail.zip正如免责声明,此项目附带原始项目附带的任何保证和版权,并且如果项目破裂,我将不承担任何责任。运气!
Dominic K

4
+1我刚刚下载并编译了VS2010 中AE.Net.Mail的最新提交,并且运行良好。我有很多比ImapX的小费更好的体验,谢谢。这里的代码给了我一个很好的入门。
RedFilter

8
人们为什么要去写这样的好东西,然后基本上不包含任何文档?我不明白
Simon_Weaver 2014年

2
它可以工作,但在较新版本中,构造函数应如下所示:ImapClient ic = new ImapClient(“ imap.gmail.com”,“ name@gmail.com”,“ pass”,AuthMethods.Login,993,true);
Ogglas 2015年

34

希望对某些人有用,您可能想看看我的想法:

S22.Imap

虽然有几个针对.NET的良好且有据可查的IMAP库可供使用,但它们都不是免费供个人使用的,更不用说商业用途了……我只是对发现的大多数被废弃的免费替代方案不满意。

S22.Imap支持IMAP IDLE通知以及SSL和部分消息提取。我已经花了些力气来制作文档并保持最新,因为对于我发现的项目,文档通常是稀疏的或不存在的。

请尝试一下,如果遇到任何问题,请通知我!


首先尝试AE.Net.Mail,发现S22.Imap在文档和到目前为止所需的功能上都更好。
angularsen 2013年

我喜欢S22.Imap的概念。但是我所缺少的是通过索引或消息号进行访问。
Tejasvi Hegde

S22.Imap的300欢呼。简单高效,在现实世界中有用。我出色的.Search()
Vishnoo Rath

如何使用此库使邮箱与IMAP保持同步?
JackXandar '16

1
有什么想法为什么我尝试登录时会收到一条InvalidCredentialsException消息,提示为“不需要[WEBALERT一些URL]需要Web登录”?在Gmail帐户上启用了IMAP。有想法吗?
Auri Rahimzadeh

19

IMAP没有.NET框架支持。您需要使用一些第三方组件。

试试https://www.limilabs.com/mail,它非常实惠且易于使用,它还支持SSL:

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

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
}

请注意,这是我创建的商业产品。

您可以在这里下载:https : //www.limilabs.com/mail


3
下载并在几分钟内启动并运行:)非常好
Moulde 2013年

是否支持使用oAuth 2传递令牌而不是传递密码?
user1166905


2
伟大的组成部分,就像一个魅力。测试了试用版(几乎完全可用)几个星期,然后购买了许可证。
Alex

1
这确实是一个重要的组成部分。与我们尝试过的所有开放源代码工作不同,该工作实际上是活的并且是最新的(我将在2016年编写)。谢谢@PawelLesnikowski PS。我没有任何关系。
jazzcat

15

MailSystem.NET包含您对IMAP4的所有需求。它是免费和开源的。

(我参与了该项目)


2
该项目正在进行中?最新版本日期:2009年12月14日星期一上午9:00
Kiquenet

1
由于已经满足了大多数需求,因此今天没有太多要添加的功能。提交时仅提交错误修复和小改进。但是没有那么多,该库非常强大。

4
这个项目似乎已经死了。无法与IMAP4一起正常使用,没有更新也没有作者的答案
Denis Vuyka 2011年

6
@alhambraeidos和@Denis是正确的。该项目实际上已经死了。在VS 2008或2010中,这些样本都不是开箱即用的。我对它们进行了上转换,然后不得不经过16个参考问题。该文档已过时,并且CodePlex页面在过去一年或更长时间没有任何问题/评论。我放弃了并最终购买了Mail.dll(不,我不隶属于他们)。
sohtimsso1970 2011年

2
该项目已经死了,IDLE无法正常工作mailsystem.codeplex.com/workitem/23586
Greg Dean

5

尝试使用该库:https : //imapx.codeplex.com/

该库免费开放源代码,并在此提供示例:https : //imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


仅供参考:imapx似乎不支持IDLE
Greg Dean

ImapX现在支持IDLE扩展。
帕维尔·阿扎诺夫

以我的经验,这个库比AE.Net.Mail慢得多-毫无意义,但要警告!
Simon_Weaver 2014年

1
该库包含主要错误(v2.0.0.18)。
大卫

2

我自己还没有尝试过,但这是一个可以尝试的免费库(我不太确定此库中的SSL部分):

http://www.codeproject.com/KB/IP/imaplibrary.aspx

另外,还有xemail,其中包含用于SSL的参数:

http://xemail-net.sourceforge.net/

[编辑]如果您(或客户)有钱请专业的邮件客户使用,则此主题有一些好的建议:

.NET组件访问电子邮件收件箱的建议


我正在使用codeproject上的Imaplibrary,但是它没有所需的功能不适用于
xemail

stackoverflow.com/questions/86553/…,我收到此错误:找不到页面
Kiquenet 2010年

我更改了链接,谢谢您通知我。
Espo

REE:您的答案中的codeproject.com/KB/IP/imaplibrary.aspx;它太酷了。自上周以来一直在为电子邮件客户端使用它,并且没有任何问题。
βӔḺṪẶⱫŌŔ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.