Lesen Sie Outlook-E-Mails mit Python

Ich möchte die analoge Arbeit automatisieren

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.

Lesen Sie Outlook-E-Mails mit Python

Annahme

Grundsätzlich sieht mein Outlook-E-Mail-Ordner so aus.

outlook_folders.png

Allgemein gesprochen

  1. Persönlicher Ordner
  2. Yahoo Mail-Ordner Es gibt und es ist weiter in mehrere Ordner unterteilt.

Angenommen, Sie möchten diesmal die E-Mail ** im "Posteingang" von ** "2. Yahoo Mail-Kontoordner" lesen.

Ordner laden

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.

Email lesen

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?

Zusammenfassung

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

Lesen Sie Outlook-E-Mails mit Python
Lesen Sie DXF mit Python
Lesen Sie Eulers Formel in Python
Mail senden mit Python (Outlook)
Lesen Sie XML mit dem in Python angegebenen Namespace
Lesen Sie die Fortran-Ausgabe mit Python
Lesen Sie PNG-Chunks in Python (Klassenausgabe)
Lesen Sie Dateien parallel zu Python
Erstellen und lesen Sie Messagepacks in Python
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Plink in Python
Konstante in Python
Lesen und schreiben Sie JSON-Dateien mit Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
[Python] Lesen Sie die angegebene Zeile in der Datei
Hashbar in Python
DirectLiNGAM in Python
Lesen von Zeichen in Bildern mit Python OCR
LiNGAM in Python
In Python reduzieren
[Python] Daten lesen
In Python flach drücken
Lesen Sie eine Datei mit verstümmelten Linien in Python
Lesen Sie Tabellendaten in einer PDF-Datei mit Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python