Auflistung Outlook-E-Mails von bestimmten Datum in Python
Bin ich mit Python 3.
Ich bin versucht zu extrahieren (Liste /drucken, Karte) outlook E-Mails nach Datum.
Ich versuche eine Schleife.. vielleicht WHILE-oder IF-Anweisung.
Kann es getan werden, da diejenigen, die einen string und das andere ein Datum.
Bitte concide, was ich habe, so weit: vielen Dank.
1. import win32com.client, datetime
2.
3. # Connect with MS Outlook - must be open.
4. outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
5. # connect to Sent Items
6. sent = outlook.GetDefaultFolder(5).Items # "5" refers to the sent item of a folder
7.
8. # Get yesterdays date
9. y = (datetime.date.today () - datetime.timedelta (days=1))
10. # Get emails by selected date
11. if sent == y:
12. msg = sent.GetLast()
13. # get Subject line
14. sjl = msg.subject
14. # print it out
15. print (sjl)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die outlook-API mit eine Methode,
Elemente.Finden
, für die Suche im Inhalt.Items
. Wenn dies der Umfang von dem, was Sie tun möchten, ist dies wahrscheinlich, wie Sie es tun sollten.Jetzt scheint es, wie Ihre if-Anweisung wird überprüft, ob E-Mails gleich gestern.
In der Dokumentation von Microsoft sagt
.Items
ist wieder eine Sammlung von E-Mails, die Sie zuerst müssen Sie Durchlaufen mit ein paar verschiedene Methoden, einschließlichItems.GetNext
oder durch verweisen auf eine bestimmte index mitItems.Item
.Können Sie dann die aktuelle E-Mail und den Zugriff auf die
.SentOn
Eigenschaft.Sollte dies iterieren durch alle Nachrichten im Ordner "gesendet" bis
sent.GetNext()
hat keine Nachrichten mehr zurück. Stellen Sie sicher, dassy
ist, der die gleiche Formatierung wie das, was.SentOn
gibt.Wenn Sie nicht wollen, um zu Durchlaufen und jede Nachricht, die Sie könnte wahrscheinlich brüten auch zwei Schleifen, die geht zurück in den Nachrichten, bis es zu gestern, wiederholt, bis es nicht mehr innerhalb von "gestern", und dann bricht.
Ive beendet den code. Danke für die Hilfe.
Dieser funktioniert. Wenn jedoch keine entsprechende Einschränkung, wenn gefunden, es nicht zu beenden. Ich habe versucht zu brechen, die findet Sie einfach eine Nachricht, und nicht alle, Im Frage mich, ob und wie man eine Ausnahme? oder wenn ich versuche ein anderes d != Datum es doenst Arbeit (es wird nichts gefunden).
Ich kann nicht sehen, dass eine For-Schleife funktioniert auch mit einem date mit einem msg(string).
Ich nicht sicher-biginner hier 🙂
??
COM-API-Dokumentation ist ziemlich gründlich, Sie können finden Sie in der Liste Klasse zum Beispiel hier. Es dokumentiert zudem die verschiedenen Methoden, die Sie verwenden können, um zu manipulieren die Objekte, die es hat. In Ihrem speziellen Beispiel, was Sie nach ist es zu verhindern, dass Ihre Elemente über Datum. Sie werden sehen, dass es bereits eine Funktion für das in der items-Klasse hier. Günstig ist es, genannt zu Beschränken. Die einzige gotcha ich kann sehen, mit dieser Funktion ist, dass Sie müssen angeben, dass der filter, den Sie gerne auf Ihre Elemente in string-form, so dass Sie zu konstruieren, den string selbst.
Also zum Beispiel weiterhin Ihren code und beschränken by-Zeit:
Natürlich können Sie einschränken nach allen möglichen Kriterien, nur überprüfen Sie die Dokumentation der Funktion. Auf diese Weise, wenn Sie einschränken, und es gibt eine leere Menge von Elementen, die Sie behandeln können, dass der Fall in den code, anstatt zu arbeiten, mit Ausnahmen. So zum Beispiel: