Zugriff auf Imap in C # [geschlossen]

112

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

UnkwnTech
quelle
3
Duplikat: stackoverflow.com/questions/545724/…
Mauricio Scheffer
7
Nee. Der von Ihnen gepostete Link bezieht sich speziell auf IMAP für Google Mail. Dieser Beitrag ist jedoch nicht.
72
Bitte seien Sie vorsichtiger, wenn Sie Fragen als Duplikate aussprechen / markieren. Ich habe es satt, "Duplikat: [Link] überall zu sehen.
Oft
7
Die Frage wurde geschlossen, daher kann ich sie nicht als Antwort hinzufügen: github.com/jstedfast/MailKit scheint eine gute Option und ein aktives Projekt zu sein.
Rory
4
Nützliche Fragen als nicht konstruktiv zu markieren ist in der Tat nicht konstruktiv ...
Robert J

Antworten:

90

Ich habe jetzt 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 bereitstellt, müssen Sie diese selbst kompilieren. (Ich glaube, Sie können es über NuGet bekommen). Es befindet sich keine DLL mehr im Ordner bin /.

Es gibt keine Dokumentation, die ich für einen Nachteil halte, aber ich konnte dies verbessern, indem ich mir den Quellcode ansah (yay für Open Source!) Und Intellisense verwendete. Der folgende Code stellt speziell eine Verbindung zum IMAP-Server von Google Mail her:

// 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 Github- Seite nach der neuesten Version und einigen besseren Codebeispielen suchen.

Dominic K.
quelle
1
Das sieht zu einfach aus, um wahr zu sein lol. Ich werde es überprüfen!
Bendr
4
@jase - Du hast recht! Ich bin mir nicht sicher, wo genau das Problem liegt (scheint die Eigenschaftendatei zu sein?), Aber ich konnte es kompilieren, indem ich alle relevanten Dateien in ein neues Klassenprojekt kopierte. In jedem Fall habe ich die Bibliotheken für Sie erstellt, damit Sie sie als DLL-Verweise auf Ihr Projekt hinzufügen können. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Nur als Haftungsausschluss gelten alle Garantien und Urheberrechte, die das ursprüngliche Projekt mit sich bringt , und ich bin nicht verantwortlich, wenn es explodiert, usw. usw. Gut Glück!
Dominic K
4
+1 Ich habe gerade das neueste Commit von AE.Net.Mail in VS2010 heruntergeladen und kompiliert und es hat perfekt funktioniert. Ich hatte eine viel bessere Erfahrung als mit ImapX, danke für den Tipp. Der Code hier gab mir einen guten Starthilfe.
RedFilter
8
Warum schreiben die Leute so großartige Dinge und fügen dann im Grunde keine Dokumentation hinzu? Ich verstehe nicht
Simon_Weaver
2
Es funktioniert, aber in neueren Versionen sollte der Konstruktor folgendermaßen aussehen: ImapClient ic = new ImapClient ("imap.gmail.com", "[email protected]", "pass", AuthMethods.Login, 993, true);
Ogglas
34

In der Hoffnung, dass es für einige nützlich sein wird, möchten Sie vielleicht meinen Versuch ausprobieren:

S22.Imap

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

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

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

user1662990
quelle
Versuchte zuerst AE.Net.Mail und fand S22.Imap besser, sowohl in Bezug auf die Dokumentation als auch auf die Funktionen, die ich bisher benötigt habe.
Angularsen
Ich mochte das Konzept von S22.Imap. Was mir jedoch fehlt, ist der Zugriff über den Index oder die Nachrichtennummer.
Tejasvi Hegde
300 Prost auf S22.Imap. Einfach Effizient und nützlich in realen Szenarien. Die .Search () i sbrilliant
Vishnoo Rath
Wie kann ich mithilfe dieser Bibliothek die Synchronisierung für mein Postfach mit IMAP fortsetzen?
JackXandar
1
Irgendwelche Ideen, warum ich beim Versuch, mich anzumelden, eine InvalidCredentialsException mit der Meldung "NO [WEBALERT some url] Web Login erforderlich" erhalten würde? IMAP ist im Google Mail-Konto aktiviert. Ideen?
Auri Rahimzadeh
19

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, es 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 .

Pawel Lesnikowski
quelle
3
Heruntergeladen und war in wenigen Minuten
betriebsbereit
Unterstützt es die Übergabe eines Tokens mit oAuth 2 anstelle der Übergabe eines Kennworts?
user1166905
Es unterstützt OAuth2: limilabs.com/blog/oauth2-gmail-imap-web-applications
Pawel Lesnikowski
2
Tolle Komponente, wirkt wie ein Zauber. Testete die Testversion (fast voll funktionsfähig) für ein paar Wochen und kaufte dann eine Lizenz.
Alex
1
Dies ist in der Tat eine großartige Komponente. Im Gegensatz zu all den Open-Source-Sachen, die wir ausprobiert haben, ist diese tatsächlich lebendig und aktuell (ich schreibe dies 2016). Vielen Dank, dass Sie @PawelLesnikowski PS. Ich bin in keiner Weise verbunden.
Jazzkatze
15

MailSystem.NET enthält alle Ihre Anforderungen für IMAP4. Es ist kostenlos und Open Source.

(Ich bin an dem Projekt beteiligt)

Piotr Kula
quelle
2
das projekt ist aktiv ?? neueste Version vom:
Montag,
1
Es gibt heute nicht mehr so ​​viele Funktionen hinzuzufügen, da die meisten Anforderungen bereits abgedeckt sind. Nur Fehlerkorrekturen und kleine Verbesserungen werden festgeschrieben, wenn sie eingereicht werden. Aber es gibt nicht so viele, die Bibliothek ist sehr robust.
4
Dieses Projekt scheint tot zu sein. Funktioniert nicht richtig mit IMAP4, keine Updates und keine Antworten von Autoren
Denis Vuyka
6
@alhambraeidos und @Denis sind korrekt. Das Projekt ist praktisch tot. Die Beispiele werden weder in VS 2008 noch in 2010 standardmäßig erstellt. Ich habe sie hochkonvertiert und musste dann 16 Referenzprobleme durchgehen. Die Dokumentation ist veraltet und die CodePlex-Seite bleibt für Probleme / Kommentare im letzten Jahr oder länger unbeantwortet. Ich gab auf und kaufte schließlich Mail.dll (nein, ich bin nicht mit ihnen verbunden).
Sohtimsso1970
2
Projekt ist ziemlich tot, IDLE funktioniert nicht richtig mailsystem.codeplex.com/workitem/23586
Greg Dean
5

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

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

a777andrey
quelle
Zu Ihrer Information: Imapx scheint IDLE nicht zu unterstützen
Greg Dean
ImapX unterstützt jetzt die IDLE-Erweiterung.
Pavel Azanov
Diese Bibliothek ist meiner Erfahrung nach deutlich langsamer als AE.Net.Mail - das macht überhaupt keinen Sinn, aber seien Sie gewarnt!
Simon_Weaver
1
Diese Bibliothek enthält wichtige Fehler (v2.0.0.18).
David
2

Ich habe es selbst nicht ausprobiert, aber dies ist eine kostenlose Bibliothek, die Sie ausprobieren können (ich bin mir über den SSL-Teil in diesem Fall nicht so sicher):

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

Es gibt auch Xemail mit Parametern für SSL:

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

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

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

Espo
quelle
Die Imaplibrary bei codeproject ist das, was ich verwendet habe, aber sie hat nicht die erforderliche Funktionalität. Ill checkout xemail
UnkwnTech
stackoverflow.com/questions/86553/… , ich erhalte diesen Fehler: Seite nicht gefunden
Kiquenet
Ich habe den Link geändert. Danke, dass Sie mich informiert haben.
Espo
REE: codeproject.com/KB/IP/imaplibrary.aspx in Ihrer Antwort; Es ist ziemlich cool. Ich benutze es seit letzter Woche für einen E-Mail-Client und hatte keine Probleme damit.
βӔḺṪẶⱫŌŔ