Python >> Tutoriel Python >  >> Python

EZGmail et Python — Gestion de vos e-mails par programmation

Salut les Finxters ! Parmi les nombreuses tâches quotidiennes que vous pouvez réaliser avec Python, il y en a une Siri -tâche assez pratique :gérer vos e-mails de manière programmatique .

Bien sûr, de nombreux e-mails ont besoin de votre compréhension humaine pour être traités correctement, et cet article ne concerne pas la mise en œuvre d'un réseau de neurones pour affiner chaque action d'e-mail.

Cependant, il s'agit d'apprendre un atout clé :comment implémenter un code pour gérer des tâches simples sur un compte Gmail, avec le ezgmail module, tel que :

  • réception et lire vos messages non lus
  • envoi e-mails, y compris les pièces jointes
  • téléchargement pièces jointes
  • affichage vos messages récents

En vous appuyant sur ces tâches simples, vous pourrez ensuite personnaliser à l'infini votre boîte aux lettres en fonction de vos besoins personnels, comme par exemple :

  • déclencher des réponses automatiques en fonction de chaînes spécifiques trouvées dans le corps et/ou l'objet d'un e-mail,
  • bloquer un expéditeur en jetant à la corbeille les e-mails basés sur l'adresse e-mail de l'expéditeur, ou
  • bien que plus élaboré, créez votre propre détecteur de spam en injectant un algorithme NLP dans votre programme.

Commençons!

Configuration

Pour que ce projet fonctionne, vous avez besoin de deux choses :

  • installer le bon module
  • activer l'API Gmail

Installer le module ezgmail

Le module avec lequel il faut bien travailler s'appelle ezgmail , et vous pouvez l'installer avec la commande habituelle :

pip install ezgmail

ou

pip3 install ezgmail

Alternativement, vous pouvez exécuter

pip install – user -upgrade ezgmail

sous Windows, pour vous assurer d'obtenir la dernière version.

Pour vérifier qu'il est correctement installé, vous pouvez ensuite vérifier la version avec l'argument de ligne de commande suivant :

pip show ezgmail 

Notez que ce module n'est pas produit par ou affilié à Google. Il a été développé par le programmeur de logiciels Al Sweigart et vous pouvez trouver tous les détails ici :https://github.com/asweigart/ezgmail

Activation de l'API Gmail

Tout d'abord, je vous recommande fortement de configurer un compte Gmail distinct pour ce projet. Cela empêchera tout événement inattendu de modifier votre boîte aux lettres de manière indésirable.

Alors, commencez par créer un nouveau compte Gmail, puis visitez cette page :https://developers.google.com/gmail/api/quickstart/python

Cliquez sur le bouton Activer l'API Gmail, puis remplissez le formulaire, après quoi vous verrez un lien vers un credentials.json fichier, que vous devrez télécharger et placer dans le même répertoire que votre fichier Python. C'est une condition pour que le code fonctionne. (Pour ceux qui ne connaissent pas, en gros, json est un format populaire et répandu qui ressemble à un dictionnaire en Python.)

Considérez le contenu de ce fichier comme votre mot de passe Gmail, alors gardez-le secret.

Lorsque vous exécuterez votre code Python pour gérer votre compte Gmail, le code visitera d'abord le json répertoire de fichiers afin de récupérer vos informations d'identification à partir du credentials.json dossier.

Cela offre une sécurité supplémentaire contrairement aux autres modules, avec ezgmail vous n'avez PAS besoin de saisir en texte brut vos informations d'identification dans le programme.

Il est temps de commencer :saisissez le code suivant : 

import ezgmail, os
# change dir to the one where json credentials are saved:
os.chdir(r'C:/path_to_credentials_json_file')
ezgmail.init()

En remarque, notez que vous auriez pu obtenir ce que fait la deuxième ligne (c'est-à-dire changer le répertoire de travail actuel dans le répertoire contenant le fichier credentials.json ) avec le Python exec() fonction !

Quelque chose comme :

exec(import os; os.system(cd path_to_credentials_json_file))  

Le .init() ouvrira votre navigateur vers une page Google où vous pourrez vous connecter. Tapez vos informations d'identification, vous verrez peut-être que cette application n'est pas vérifiée :c'est OK (croyez-moi, je l'ai fait avant vous et ça va !), cliquez sur Avancé , puis Accéder au démarrage rapide (non sécurisé) .

Lorsque la page suivante vous invite à Quickstart veut accéder à votre compte Google, autorisez-le, puis fermez le navigateur.

Vous avez presque terminé la phase de configuration.

Ce qui vient de se passer est un token.json Le fichier a été créé, et il sera utilisé pour fournir à votre code Python l'accès au compte Gmail que vous avez créé pour ce projet. Gardez celui-ci en sécurité aussi.

Ainsi à partir de maintenant, vous n'aurez plus besoin de saisir manuellement vos identifiants.

Vous êtes prêt à partir ! A partir de maintenant, le .init() méthode ne devrait plus être nécessaire.

Envoi d'e-mails

La méthode est assez simple :ezgmail.send()

ezgmail.send('[email protected]', 'test', 'hello world!')

Voici les arguments que vous pouvez transmettre : 

args obligatoire sont :

  • destinataire
  • sujet
  • corps

Facultatif, kwargs sont :

  • pièce jointe (vous pouvez passer une liste s'il y en a plusieurs)
  • expéditeur
  • cc (peut ne pas fonctionner pour le moment, selon la page github)
  • bcc (peut ne pas fonctionner pour le moment, selon la page github)

Oublié l'adresse e-mail le token.json a été configuré pour ?

Vérifiez simplement l'attribut ezgmail.EMAIL_ADDRESS 🙂 

ezgmail.EMAIL_ADDRESS

Recevoir des e-mails

Il y a deux étapes :

  • Lire l'e-mail, et
  • Télécharger ses pièces jointes.

Lire le courrier

Le ezgmail package structure les e-mails comme le fait le client de messagerie graphique :il les organise en fils, qui peuvent à leur tour contenir plusieurs messages.

D'où la méthode .unread() liste les GmailThread objets.

print(ezgmail.unread())

Vous souhaitez lire un e-mail spécifique dans un fil ?

Le .messages l'attribut est exactement ce dont vous avez besoin. Il est inscriptible : 

unreadThreads = ezgmail.unread()
print(unreadThreads[0].messages[0].body)

Il est livré avec un tas d'attributs tels que sender , recipient , body , timestamp etc

Vérifiez également le .recent() méthode :elle renvoie les 25 fils de discussion les plus récents de votre compte Gmail.

recentThreads = ezgmail.recent()
print(ezgmail.summary(recentThreads))

Télécharger des pièces jointes

Un GmailMessage L'objet porte un attribut de pièces jointes qui est une liste de noms de fichiers.

Passez n'importe quelle combinaison de ces noms de fichiers dans le .downloadAttachment() méthode pour télécharger les fichiers, ou si vous voulez tous les fichiers, utilisez le .downloadAllAttachments() méthode, qui a même un argument permettant de spécifier où télécharger les fichiers (par défaut le répertoire de travail courant).

Recherche de courrier

Vous l'avez deviné, utilisez le ezgmail.search() méthode!

Entrez une chaîne dans cette méthode comme vous le feriez dans une boîte aux lettres graphique.

resultThreads = ezgmail.search('json')
ezgmail.summary(resultThreads)

Cela renvoie une liste de threads (rappelez-vous le GmailThreads objets ?) 

Vous pouvez ensuite transmettre les attributs mentionnés ci-dessus pour récupérer des informations spécifiques sur un message.

Où aller à partir d'ici ?

Essayez-le vous-même !

Et découvrez les autres fonctionnalités offertes par ce module efficace et convivial !

  • Peut-être en avez-vous besoin pour automatiser une newsletter ?
  • Ou pour configurer des rappels par e-mail pour vos besoins personnels ?
  • Ou au travail ?

Faites le nous savoir!

Quelques remarques finales :

  • en général, pour que cela fonctionne, le compte de messagerie doit être configuré avec le niveau de sécurité le plus bas, sinon l'e-mail finira soit bloqué, soit dans les spams
  • vous ne pourrez peut-être pas envoyer des e-mails répétés avec exactement le même texte (car il s'agit probablement de spams) ni avec .exe pièces jointes (puisque ce sont probablement des virus)
  • veuillez utiliser cette technologie de manière responsable
  • merci à Al Sweigart pour la création et la maintenance de ce module génial
  • ce n'est pas parce qu'il fonctionne actuellement qu'il fonctionnera pour toujours ; il dépend entre autres des choix de Google, et le comportement de ce module dans le temps ne peut être garanti

Enfin, si vous avez besoin de traiter des e-mails depuis un compte autre que Gmail, vous devez cocher les bons modules pour envoyer et recevoir des e-mails depuis n'importe quel compte, respectivement en utilisant les protocoles SMTP et IMAP.