Dans mon travail quotidien, c'est un super analogue qui copie le "numéro de demande", "titre de la demande", "URL", "date de réception", etc. dans le courrier reçu par Outlook vers le tableau de gestion (Excel) stocké dans le serveur. Il y a du travail.
Je me suis demandé si je pouvais en quelque sorte automatiser cette tâche, alors je vais commencer par ** lire l'e-mail que j'ai reçu dans Outlook avec Python **.
J'ai fait beaucoup de recherches, mais je n'avais pas beaucoup d'informations et j'ai réussi à le faire par essais et erreurs, je vais donc laisser les informations sous forme de mémorandum. (Le bureau de ma maison est très ancien et Outlook 2007 ... Je pense que c'est probablement la même chose avec le dernier Office, mais pardonnez-moi si cela ne fonctionne pas.)
Le code final est très simple.
En principe, mon dossier de messagerie Outlook ressemble à ceci.
D'une manière générale
Cette fois, supposons que vous souhaitiez lire le courrier ** dans la "Boîte de réception" de ** "2. Dossier de compte Yahoo Mail".
Vous devez importer win32com.client pour travailler avec Outlook. J'utilise Anaconda et j'ai pu l'importer sans aucune installation supplémentaire.
import win32com.client
Créez ensuite un objet Outlook.
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
Cet objet appelé outlook possède un attribut appelé Dossiers, qui correspond à "1. Dossier personnel" et "2. Dossier de compte de messagerie Yahoo".
accounts = outlook.Folders
for account in accounts:
print(account)
résultat
Dossier personnel
**********@yahoo.co.jp
Ce compte a également un attribut appelé Dossiers, qui correspond aux dossiers de la hiérarchie inférieure.
Pour résumer jusqu'à présent
print("root (Nombre de comptes=%d)" % accounts.Count)
for account in accounts:
print("└ ",account)
folders = account.Folders
for folder in folders:
print(" └ ",folder)
Résultat d'exécution
root (Nombre de comptes=2)
└ Dossier personnel
└ Éléments supprimés
└ Boîte de réception
└ Boîte d'envoi
└ Éléments envoyés
└ Calendrier
└ Coordonnées
└ Histoire
└ Mémo
└ Travail
└ Brouillon
└ Flux RSS
└ Courrier indésirable
└ **********@yahoo.co.jp
└ Boîte de réception
└ Bulk Mail
└ Draft
└ Sent
└ Trash
En plus, c'est simple.
Le courrier réel est contenu dans le dossier finalement obtenu, mais ce dossier a un attribut appelé Items, qui correspond à "mail".
Les mails obtenus à partir d'éléments sont des objets itérables, utilisez donc l'instruction for pour les récupérer un par un.
mails = folder.Items
for mail in mails:
print("matière: " ,mail.subject)
print("De: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("Date et heure de réception: ", mail.receivedtime)
print("Non lu: ", mail.Unread)
print("Texte: ", mail.body)
attribut | sens |
---|---|
mail.subject | matière |
mail.sendername | Du nom |
mail.senderEmailAddress | Adresse e-mail de l'expéditeur |
mail.receivedtime | Date et heure de réception |
mail.body | Texte |
mail.Unread | Indicateur non lu |
Ensuite, vous pouvez voir que le contenu du courrier peut être obtenu comme ceci.
matière:C'est un test
De: *** [*******@gmail.com]
Date et heure de réception: 2020-05-30 07:17:33+00:00
Non lu: False
Texte:Le recevez-vous correctement?
Enfin, je vais résumer le code.
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
accounts = outlook.Folders
print("root (Nombre de comptes=%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("matière: " ,mail.subject)
print("De: %s [%s]" % (mail.sendername, mail.senderEmailAddress))
print("Date et heure de réception: ", mail.receivedtime)
print("Non lu: ", mail.Unread)
print("Texte: ", mail.body)
Résultat d'exécution
root (Nombre de comptes=2)
└ Dossier personnel
└ Éléments supprimés
└ Boîte de réception
└ Boîte d'envoi
└ Éléments envoyés
└ Calendrier
└ Coordonnées
└ Histoire
└ Mémo
└ Travail
└ Brouillon
└ Flux RSS
└ Courrier indésirable
└ **********@yahoo.co.jp
└ Boîte de réception
-----------------
matière:C'est un test
De: *** [*******@gmail.com]
Date et heure de réception: 2020-05-30 07:17:33+00:00
Non lu: False
Texte:Le recevez-vous correctement?
Recommended Posts