2011-01-06 6 views
5

Ich bin auf der Suche nach einer Lösung, mit der ich eingehende E-Mails lesen kann. Die drei Methoden, die ich denken kann dies im Moment zu tun sind:Wie lese ich eingehende E-Mails mit C#

  1. E-Mail-Server erstellen E-Mails
  2. Haken in einen bestehenden Exchange-Server
  3. Haken in Outlook Parsen, die bereits eingerichtet ist mit einer E-Mail Konto

Was ist der beste Weg, dies zu tun? Und wie geht man es um?

Dank

+0

Ich denke, das hängt wirklich davon ab, was Sie mit der E-Mail erreichen wollen. Wenn Sie eine Web-App erstellen, hilft entweder die Abfrage oder die Verwendung eines Dienstes zum Empfangen eingehender E-Mails. Wenn Sie aus Perspektivesperspektive tatsächlich mit der E-Mail interagieren möchten, kann das Erstellen eines Add-Ons hilfreich sein. –

+0

@Steve Ich möchte in der Lage sein, Mail (mit Anhang) zu lesen, zu parsen und dann eine automatische Antwort zu senden. – Chris

Antwort

9

Wenn Sie bereits mit einem Exchange-Server als Mailbox-Host zu tun würde ich das über IMAP (bevorzugt) oder POP-Zugriff vorschlagen nutzen. Kürzlich habe ich eine Lösung entwickelt, die über AfterLogic's MailBee.NET IMAP component auf ein bestimmtes Postfach zugreift, was meiner Meinung nach die Empfehlung wert ist. Sie haben eine Standard-Testversion und vernünftige Preise. Auch wenn Sie diesen Weg gehen, ist die POP- oder IMAP-Automatisierung flexibel genug, um mit fast jeder Mailbox-Server-Plattform zu arbeiten. Es muss nicht auf Exchange-Umgebungen beschränkt sein.

Es gibt auch kostenlose .NET IMAP-Komponenten, die den Job auch erledigen können. In meiner begrenzten Forschung fand ich heraus, dass die kostenlosen Alternativen nicht alle meine Anforderungen erfüllten oder nicht so leicht zu erlernen waren, aber Ihre Situation kann sich unterscheiden. Die Vollständigkeit halber ist hier eine Liste von alternativen/freien IMAP Bibliotheken, die ich vor der Entscheidung, als das Geld auf MailBee zu verbringen:

den zweiten Teil Ihrer Frage zu beantworten ... die Umsetzung in meinem letzten Projekt umfasste eine sehr einfache Konsolenanwendung zu schreiben, die th verweist e MailBee.NET IMAP-Bibliothek. Die Konsolenanwendung verfügt über eine Standardkonfigurationsdatei und akzeptiert Befehlszeilenargumente als Parameter. Wir definieren geplante Windows-Tasks, um die Konsolenanwendung gemäß unseren Prozessanforderungen auszuführen. Ich bin mir sicher, dass Sie dies auf viele andere Arten tun könnten, aber dies war der einfachste Ansatz für unsere Bedürfnisse.

+0

+1 für MailBee, wir verwenden es auch. – PhilPursglove

+0

Angesichts der obigen Kommentare würde ich sagen, diese Antwort ist großartig, obwohl nicht vergessen, dass es Wege gibt, die E-Mail direkt zu liefern, ohne abzufragen. Sie können einen Mail-Server einrichten, um E-Mails als HTTP-Anfrage zu senden, oder einen Drittanbieter-Dienst verwenden, um dies zu tun (ich werde hier keinen erwähnen, da ich einen ausführe, aber ich bin mir sicher, dass Sie ihn finden können) –

2

Verwenden Sie den vorhandenen IMAP-Server und IMAP component dafür.

Die Erstellung Ihres eigenen IMAP-Servers ist meiner Meinung nach ein großes Sicherheitsrisiko.

Es gibt kostenlose Komponenten, aber die meisten von ihnen haben Probleme mit Umlaute und "nicht-Standard E-Mail-Nachrichten ... und es gibt keine Unterstützung (LumiSoft.Net seit fast 2 Jahren aufgegeben)

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

    imap.SelectInbox(); 
    List<long> uidList = imap.Search(Flag.Unseen); 
    foreach (long uid in uidList) 
    { 
     IMail email = new MailBuilder() 
      .CreateFromEml(imap.GetMessageByUID(uid)); 
     Console.WriteLine(email.Subject); 
     Console.WriteLine(email.Attachments.Count); 
    } 
    imap.Close(); 
} 

Mail.dll enthält auch SMTP-Komponente und template engine, so dass Sie Antworten einfach senden können.

Haftungsausschluss: Ich bin an der Entwicklung dieses kommerziellen Produkts beteiligt.

5

Ich weiß, das ist ein älterer Thread, aber ich wollte einen Link zu einer großen Open-Source-Imap Bibliothek namens ImapX2 hinzuzufügen: http://imapx.codeplex.com/

ich die meisten Links in diesem Thread versuchte unterschiedlichen Erfolg, aber ich fand dass die ImapX2-Bibliothek am besten nach meinen Bedürfnissen funktioniert.