In meiner täglichen Arbeit ist es ein Super-Analogon, das die "Anfragennummer", den "Anfragetitel", die "URL", das "Empfangsdatum" usw. in der von Outlook empfangenen E-Mail in die auf dem Server gespeicherte Verwaltungstabelle (Excel) kopiert. Es gibt Arbeit.
Ich habe mich gefragt, ob ich diese Aufgabe irgendwie automatisieren könnte, also lese ich zunächst ** die E-Mail, die ich in Outlook mit Python erhalten habe **.
Ich habe viel recherchiert, aber ich hatte nicht viele Informationen und ich habe es durch Versuch und Irrtum geschafft, also werde ich die Informationen als Memorandum hinterlassen. (Das Büro in meinem Haus ist sehr alt und Outlook 2007 ... Ich denke, es ist wahrscheinlich dasselbe mit dem neuesten Büro, aber bitte verzeihen Sie mir, wenn es nicht funktioniert.)
Der endgültige Code ist sehr einfach.
Grundsätzlich sieht mein Outlook-E-Mail-Ordner so aus.
Allgemein gesprochen
Angenommen, Sie möchten diesmal die E-Mail ** im "Posteingang" von ** "2. Yahoo Mail-Kontoordner" lesen.
Sie müssen win32com.client importieren, um mit Outlook arbeiten zu können. Ich verwende Anaconda und konnte es ohne zusätzliche Installation importieren.
import win32com.client
Erstellen Sie dann ein Outlook-Objekt.
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
Dieses Objekt namens Outlook verfügt über ein Attribut namens Ordner, das "1. Persönlicher Ordner" und "2. Yahoo Mail-Kontoordner" entspricht.
accounts = outlook.Folders
for account in accounts:
print(account)
Ergebnis
Persönlicher Ordner
**********@yahoo.co.jp
Dieses Konto verfügt auch über ein Attribut namens Ordner, das Ordnern in der unteren Hierarchie entspricht.
Bisher zusammengefasst
print("root (Anzahl der Konten=%d)" % accounts.Count)
for account in accounts:
print("└ ",account)
folders = account.Folders
for folder in folders:
print(" └ ",folder)
Ausführungsergebnis
root (Anzahl der Konten=2)
└ Persönlicher Ordner
└ Gelöschte Elemente
└ Posteingang
└ Postausgang
└ Gesendete Artikel
└ Kalender
└ Kontaktinformationen
└ Geschichte
└ Memo
└ Arbeit
└ Entwurf
└ RSS-Feed
»Junk-Mail
└ **********@yahoo.co.jp
└ Posteingang
└ Bulk Mail
└ Draft
└ Sent
└ Trash
Außerdem ist es einfach.
Die eigentliche Mail ist im endgültig erhaltenen Ordner enthalten, aber dieser Ordner hat ein Attribut namens Items, das "mail" entspricht.
Die aus Items erhaltenen Mails sind iterierbare Objekte. Verwenden Sie daher die for-Anweisung, um sie einzeln abzurufen.
mails = folder.Items
for mail in mails:
print("Gegenstand: " ,mail.subject)
print("Von: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("Empfangenes Datum und Uhrzeit: ", mail.receivedtime)
print("Ungelesen: ", mail.Unread)
print("Text: ", mail.body)
Attribut | Bedeutung |
---|---|
mail.subject | Gegenstand |
mail.sendername | Von Namen |
mail.senderEmailAddress | E-Mail-Adresse des Absenders |
mail.receivedtime | Empfangenes Datum und Uhrzeit |
mail.body | Text |
mail.Unread | Ungelesene Flagge |
Dann können Sie sehen, dass der Inhalt der Mail auf diese Weise erhalten werden kann.
Gegenstand:Dies ist ein Test
Von: *** [*******@gmail.com]
Empfangenes Datum und Uhrzeit: 2020-05-30 07:17:33+00:00
Ungelesen: False
Text:Erhalten Sie es richtig?
Abschließend werde ich den Code zusammenfassen.
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
accounts = outlook.Folders
print("root (Anzahl der Konten=%d)" % accounts.Count)
for account in accounts:
print("└ ",account)
folders = account.Folders
for folder in folders:
print(" └ ",folder)
mails = folder.Items
for mail in mails:
print("-----------------")
print("Gegenstand: " ,mail.subject)
print("Von: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("Empfangenes Datum und Uhrzeit: ", mail.receivedtime)
print("Ungelesen: ", mail.Unread)
print("Text: ", mail.body)
Ausführungsergebnis
root (Anzahl der Konten=2)
└ Persönlicher Ordner
└ Gelöschte Elemente
└ Posteingang
└ Postausgang
└ Gesendete Artikel
└ Kalender
└ Kontaktinformationen
└ Geschichte
└ Memo
└ Arbeit
└ Entwurf
└ RSS-Feed
»Junk-Mail
└ **********@yahoo.co.jp
└ Posteingang
-----------------
Gegenstand:Dies ist ein Test
Von: *** [*******@gmail.com]
Empfangenes Datum und Uhrzeit: 2020-05-30 07:17:33+00:00
Ungelesen: False
Text:Erhalten Sie es richtig?
Recommended Posts