webentwicklung-frage-antwort-db.com.de

Zugriff auf Imap in C #

Gibt es eine integrierte Methode für den Zugriff auf einen Imap-Server (mit SSL) in C # oder gibt es eine gute kostenlose Bibliothek?

107
UnkwnTech

Ich habe schon eine Weile nach einer IMAP-Lösung gesucht und nachdem ich einige ausprobiert habe, gehe ich mit AE.Net.Mail .

Sie können den Code herunterladen, indem Sie auf die Registerkarte Code gehen und auf das kleine Symbol "Herunterladen" klicken. Da der Autor keine vorgefertigten Downloads zur Verfügung stellt, müssen Sie diese selbst kompilieren. (Ich glaube, dass Sie es durch NuGet bekommen können). Im Ordner bin/befindet sich keine DLL mehr.

Es gibt keine Dokumentation, die ich für einen Nachteil halte, aber ich konnte dies verbessern, indem ich mir den Quellcode ansah (yay for open source!) Und Intellisense verwendete. Der folgende Code verbindet sich speziell mit dem IMAP-Server von Google Mail:

// 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", "[email protected]", "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();

Stellen Sie sicher, dass Sie auf der Seite Github nach der neuesten Version und einigen besseren Codebeispielen suchen.

88
Dominic K

In der Hoffnung, dass es für einige von Nutzen sein wird, möchten Sie vielleicht meine Vorgehensweise überprüfen:

S22.Imap

Es gibt zwar ein paar gute und gut dokumentierte IMAP-Bibliotheken für .NET, aber keine davon ist kostenlos für den persönlichen, geschweige denn für den kommerziellen Gebrauch ... und ich war einfach nicht allzu zufrieden mit den meist aufgegebenen kostenlosen Alternativen, die ich gefunden habe.

S22.Imap unterstützt IMAP IDLE-Benachrichtigungen sowie das Abrufen von SSL- und Teilnachrichten. Ich habe einige Anstrengungen unternommen, um Dokumentation zu erstellen und auf dem neuesten Stand zu halten, da bei den Projekten, die ich gefunden habe, die Dokumentation oft spärlich oder nicht vorhanden war.

Probieren Sie es einfach aus und lassen Sie mich wissen, wenn Sie auf Probleme stoßen!

33
user1662990

Es gibt keine .NET Framework-Unterstützung für IMAP. Sie müssen eine Komponente eines Drittanbieters verwenden.

Versuchen Sie https://www.limilabs.com/mail , es ist sehr erschwinglich und einfach zu bedienen und unterstützt auch 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);
}

Bitte beachten Sie, dass dies ein kommerzielles Produkt ist, das ich erstellt habe.

Sie können es hier herunterladen: https://www.limilabs.com/mail .

17

MailSystem.NET enthält alles, was Sie für IMAP4 benötigen. Es ist kostenlos und Open Source.

(Ich bin in das Projekt involviert)

14
user333306

Versuchen Sie, die Bibliothek zu verwenden: https://imapx.codeplex.com/

Diese Bibliothek ist kostenlos, Open Source und enthält ein Beispiel: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox

4
PACCBET

Ich habe es nicht selbst ausprobiert, aber dies ist eine kostenlose Bibliothek, die Sie ausprobieren könnten (ich bin mir nicht so sicher, was den SSL-Teil in dieser betrifft):

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

Es gibt auch xemail mit Parametern für SSL:

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

[EDIT] Wenn Sie (oder der Kunde) das Geld für einen professionellen Mail-Client haben, hat dieser Thread einige gute Empfehlungen:

Empfehlungen für eine .NET-Komponente zum Zugriff auf einen E-Mail-Posteingang

2
Espo