2012-09-05 14 views
8

Mögliche Duplizieren:
Reading e-mails from Outlook with Python through MAPIPython lesen meine Outlook E-Mail-Postfach und analysieren Nachrichten

Ich bin ganz neu in Python und haben die Aufgabe, ein Programm zu schreiben, das verbindet meine Microsoft Outlook-Postfach, durchläuft alle E-Mails und wenn das Thema ein bestimmtes Wort hat, dann werden die Details der E-Mail-Zeit und Thema in Variablen gespeichert, sowie der E-Mail-Nachrichtentext wird analysiert und relevante Informationen werden in gespeichert Variablen. Dann wird diese Information in einem externen Server/Datenbank gespeichert. Außerdem muss es in der Lage sein, alle neuen E-Mails zu überwachen, die in mein Postfach gelangen, und die Übung zum Überprüfen der Betreffzeile wiederholen und entsprechende Maßnahmen ergreifen.

Ich habe genau die gleiche Art von Programm in C# früher mit der Interop-Bibliothek geschrieben, aber jetzt müssen Sie dies in Python tun. Ich kann die Details durch späteres Lesen der Moduldokumentationen herausfinden, aber aus einer höheren Perspektive, welche Module ich verwenden sollte. Ich habe meine Forschung durchgeführt und einige Module, die erwähnt wurden, beinhalten E-Mail, procmail und imaplib, aber was empfehlen die Python-Veteranen hier für die Art von Projekt, das ich überhole?

Vielen Dank im Voraus für jede Hilfe, die Sie möglicherweise bereitstellen können!

+0

Warum es in Python, wenn es bereits in C# getan wird? – Collin

+0

Das gleiche Programm für ein anderes Team zu machen, und dieses Team möchte es in Python machen, weil sie nicht viel C# wissen. Sie wollen auch mein Programm in Zukunft ändern, um ihre (sich ständig ändernden) Bedürfnisse zu erfüllen, und es wäre einfacher für sie, auf Python als auf C# aufzubauen. – user1650464

+2

Siehe http://stackoverflow.com/questions/5077625/reading-e-mails-from-outlook-with-python-through-mapi – favoretti

Antwort

9

In einer Firma, die ich arbeitete, haben wir eine Mailbox für Vorschläge mit Websites, die "Erwachsenen" Material und ein Postfach für Spam-Mail, die blockiert werden sollte. Sobald ich anfing zu arbeiten, war ich verantwortlich für diese "gnädigen" Jobs. Überprüfen Sie, es gab so etwas wie 2000 ungelesene Mails zu blockieren und 4000 Spam-Mails zu blockieren. Natürlich ist das eine zu automatisierende Funktion und ich suchte nach einer guten Lösung für mich. Was ich tat:

[1] Gebrauchte Python IMAP auf Exchange Server [2] Gebrauchte beatifulsoup (Python) zu analysieren, die href Werte innerhalb der E-Mail [3] Danach senden eine E-Mail 'dankend' die eine Verbindung Benutzer für seine Zusammenarbeit (sehr wichtig)

Drei Tage nach meinem Chef dankte mich für die große Mühe, die ich tat, beantwortete alle E-Mails und wir haben Komplimente. Denn jetzt antworten wir den Kunden zurück. (nicht ich das Skript)

Ok. jetzt lässt

  1. Überprüfen Sie das imap Python-Modul einen Plan machen [1], und nach einem Tutorial nehmen ssl IMAP4 [4]
  2. entscheiden, was am besten für Ihr Problem ist? Laden Sie die E-Mails herunter (pop3) oder durchsuchen Sie sie auf dem Server (IMAP).
  3. Überprüfen Sie, ob Sie bevor Sie die Protokolle IMAP4 oder POP3 Verbindung herstellen können, Austausch ist Buggy in diesem Teil zu diesen Fehlerbericht überprüfen Sie bitte [3]
  4. Ok, Sie sind sicher, dass Sie ein IMAP4 oder POP3 verwenden, jetzt holen verbinden kann Nachricht und parse es mit schöner Suppe oder lxml.(Mein Fall habe ich nach href und 'mailto:')
  5. Sie eine nette Nachricht über das Feld 'Von:' der E-Mail macht es persönlich
  6. PROFIT

[1] Google es imap Python

[2] google es BeautifulSoup Python

[3] http://support.microsoft.com/kb/296387

[4] http://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-gmail/

Sorry, aber ich musste die Google-URLs wegen meiner niedrigen Punktzahl geben.

Ich hoffe, diese Antwort gibt Ihnen einige gute Hinweise auf Ihre Lösung. Natürlich können Sie es mehr hax0r mit lxml machen, die Daten an eine DB senden. Aber nachdem Sie verbinden und anfangen zu manipulieren, können Sie alles tun :)

Verwandte Themen