Accessing Imap in C# [closed]

2019-01-01 10:42发布

问题:

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



标签: c# imap