Is there a built-in method to access an Imap server (with SSL) in C# or is there a good free library?
问题:
回答1:
I\'ve been searching for an IMAP solution for a while now, and after trying quite a few, I\'m going with AE.Net.Mail.
You can download the code by going to the Code tab and click the small \'Download\' icon. As the author does not provide any pre-built downloads, you must compile it yourself. (I believe you can get it through NuGet though). There is no longer a .dll in the bin/ folder.
There is no documentation, which I consider a downside, but I was able to whip this up by looking at the source code (yay for open source!) and using Intellisense. The below code connects specifically to Gmail\'s IMAP server:
// 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();
Make sure you checkout the Github page for the newest version and some better code examples.
回答2:
In the hope that it will be useful to some, you may want to check out my go at it:
S22.Imap
While there are a couple of good and well-documented IMAP libraries for .NET available, none of them are free for personal, let alone commercial use...and I was just not all that satisfied with the mostly abandoned free alternatives I found.
S22.Imap supports IMAP IDLE notifications as well as SSL and partial message fetching. I have put some effort into producing documentation and keeping it up to date, because with the projects I found, documentation was often sparse or non-existent.
Feel free to give it a try and let me know if you run into any issues!
回答3:
There is no .NET framework support for IMAP. You\'ll need to use some 3rd party component.
Try https://www.limilabs.com/mail, it\'s very affordable and easy to use, it also supports 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);
}
Please note that this is a commercial product I\'ve created.
You can download it here: https://www.limilabs.com/mail.
回答4:
MailSystem.NET contains all your need for IMAP4. It\'s free & open source.
(I\'m involved in the project)
回答5:
Try use the library : https://imapx.codeplex.com/
That library free, open source and have example at this : https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox
回答6:
I haven\'t tried it myself, but this is a free library you could try (I not so sure about the SSL part on this one):
http://www.codeproject.com/KB/IP/imaplibrary.aspx
Also, there is xemail, which has parameters for SSL:
http://xemail-net.sourceforge.net/
[EDIT] If you (or the client) have the money for a professional mail-client, this thread has some good recommendations:
Recommendations for a .NET component to access an email inbox