Tutoriel: Comment envoyer
un courriel avec Python

gmail

Coder un script pour envoyer des courriels peut être très pratique pour les journalistes, que ce soit pour se créer ses propres alertes sur les informations de son choix ou pour surveiller ses scripts à distance!

Note: Pour vous envoyer un courriel à partir d’un script codé en Python, vous avez besoin de connaître un minimum la programmation. J’ai créé ce petit tutoriel pour tout ceux qui souhaitent apprendre à coder. Une fois suivi, vous devriez être en mesure d’utiliser les portions de code ci-dessous!

#I Des alertes sur mesure

En vous envoyant un courriel en fonction des conditions de votre choix, telles que codées dans votre script, vous pouvez vous créer des alertes totalement personnalisées!

Vous souhaitez suivre de très près un élu? Codez un script qui vérifiera son compte Twitter et Facebook toutes les dix minutes et qui vous enverra un courriel si un nouveau statut a été publié!

Grâce à votre programme, vérifiez automatiquement tous les matins, midis et soirs, les fichiers pdf des transcriptions des différentes assemblées et comités auxquels il participe. Il y a dit quelque chose? Hop! Votre script peut copier-coller ses interventions dans un courriel qui vous parviendra la seconde d’après!

Pas mal, non? Les Alertes Google peuvent aller se rhabiller!

#II Surveillez vos scripts à distance

Un autre utilisation intéressante: vous prévenir quand vos scripts ont fini de rouler ou quand ils se sont interrompus de manière inattendue.

Certains scripts peuvent rouler pendant un long moment… Si vous êtes un adepte de l’extraction de données (web scraping), vous savez de quoi je parle. S’il y a beaucoup d’information à extraire, votre script vous donnera des cheveux blancs!

Je me souviens d’un extracteur de données que j’avais codé pour un de mes cours, lors de ma maîtrise. Le but était de récupérer toutes les données divulguées de façon pro-active pour les contrats du ministère fédéral des Travaux publics. Des dizaines de milliers de contrats, tous sur des pages web différentes…! Et, en plus, je me faisais régulièrement déconnecter de leur serveur. Ça m’avait pris des jours!

Mais quand vous êtes un journaliste toujours en train de courir à droite et à gauche, impossible de rester à côté de votre ordinateur pour surveiller du coin de l’oeil vos petits scripts! Heureusement, des mises à jour par courriel, codées par vous-même, peuvent vous éviter bien du stress.

#III Pour un courriel de base

[MAJ: Gmail a modifié certains protocoles de sécurité. Vous devez désormais autoriser les “Applications moins sécurisées” sur votre compte pour pouvoir envoyer des courriels avec des scripts en Python.]

Il existe un module natif en Python pour envoyer des courriels: smtplib. Nul besoin donc d’installer des modules externes!

Pour envoyer un courriel de base (pas d’objet), avec une adresse Gmail, le code est relativement simple:

À la ligne 2, ce sont les paramètres du serveur de Gmail pour les courriels. Tout d’abord le serveur en question (ou son adresse IP), puis le port utilisé. Si vous utilisez un autre service, comme Yahoo par exemple, vous devez trouver les informations correspondantes.

À la ligne 4, c’est une fonction de sécurité, requise pour se connecter à Gmail. Le tout protège l’envoi de votre mot de passe.

N’oubliez pas de d’indiquer votre adresse courriel et votre mot de passe à la ligne 5.

La variable msg contiendra votre message et la dernière ligne envoi le tout!

#IV Pour un courriel plus élaboré

[MAJ: N’oubliez pas d’activer les “applications moins sécurisées” sur votre compte Gmail, sinon les scripts ci-dessous ne fonctionneront pas.]

Si vous souhaitez envoyer automatiquement une demande d’entrevue par courriel à la police à chaque fois qu’il y a une saisie de drogue, vous avez besoin d’envoyer un message un peu plus professionnel!

Avec le code ci-bas, vous enverrez un courriel “propre”, avec l’expéditeur, le destinataire et l’objet indiqués.

Pour ce faire, vous avez besoin de deux nouveaux modules email.MIMEMultipart et email.MIMEText. Ils font partie des modules de base. Pas besoin de les installer.

Encore une fois, n’oubliez pas de remplacer les champs suivants avec les bonnes informations:

  • Ligne 6 avec votre adresse courriel
  • Ligne 7 avec l’adresse du destinataire
  • Ligne 11 avec l’objet du courriel
  • Ligne 13 avec votre message
  • Ligne 18 avec votre mot de passe

#V Pour envoyer une pièce jointe

[MAJ: Activez les “applications moins sécurisées” sur votre compte Gmail pour pouvoir utiliser les scripts ci-dessous.]

Des pièces jointes dans un courriel, c’est un peu plus compliqué. En faisant un peu de recherche, je me suis rendu compte que tout le monde a une méthode plus ou moins différente (mes sources sont à la toute fin de l’article).

De mon côté, j’ai essayé de garder le code le plus simple possible, pour qu’il fasse le minimum requis! Malgré tout, de nombreux modules sont nécessaires, comme vous pouvez le voir ci-dessous.

En gros, l’étape essentielle est de convertir le fichier joint en Base64, avant de l’envoyer. Mon code fonctionne pour envoyer des fichiers textes, des pdfs, des photos, de l’audio ou de la vidéo!

En plus des informations de base, cette fois-ci, vous devez aussi indiquer:

  • Le nom du fichier à la ligne 21,
  • Le chemin d’accès du fichier à la ligne 22.

C’est fait! Vous avez tout ce qu’il vous faut pour ajouter l’envoi de courriels à vos scripts! Servez-vous en!

Suivez moi sur Facebook, Twitter et LinkedIn pour être tenu au courant de mes prochains articles!

Comment ai-je appris à envoyer des courriels en Python? En lisant tout ces très bons articles:

– https://docs.python.org/2/library/smtplib.html 

– http://www.tutorialspoint.com/python/python_sending_email.htm

– http://en.wikibooks.org/wiki/Python_Programming/Email

– http://www.pythonforbeginners.com/code-snippets-source-code/using-python-to-send-email

– https://docs.python.org/2/library/email.mime.html

– https://docs.python.org/2/library/email-examples.html

– https://docs.python.org/2/library/email.html

– http://www.blog.pythonlibrary.org/2013/06/26/python-102-how-to-send-an-email-using-smtplib-email/

– http://www.smipple.net/snippet/Jimmyromanticde/gmail.py

8 commentaires sur “Tutoriel: Comment envoyer
un courriel avec Python

  1. Vendomele

    Bonjour,

    Pour commencer, merci pour ce tuto.

    Mais est-il possible d’activer l’option “Applications moins sécurisées” de Google par code, le temps de l’exécution du code?

    Google signale que notre compte est plus vulnérable ou il veut juste nous faire peur.

    Répondre
  2. Al

    Bonjour,

    Tout d’abord, merci pour cet article, il m’a été très utile.

    J’ai fais un script qui envoie tous les jours un mail à des collègues pour leur rappeler de m’envoyer des documents dont j’ai besoin.
    Malheureusement, je crois que devant une telle méthode certains m’ont filtré directement vers la corbeille. Je cherche donc à passer ces filtres. Est-ce que vous savez si il existe un moyen pour envoyer des mails avec une “fausse adresse mail” (comme sur http://email-anonyme.5ymail.com/ par exemple) ?

    Merci !

    Répondre
    • Nael Shiab Auteur

      Bonjour! Merci pour votre commentaire. Malheureusement, non, je ne sais pas s’il est possible de passer outre ces filtres. Changer d’adresse pourrait être une solution. Sinon parlez à votre département de TI. Mais ne spamez pas vos collègues! 😉

      Répondre
  3. MF

    Merci beaucoup pour cet article qui m’a grandement aidé dans mon petit project.
    Si ça peut aider d’autres, avec ma version de Python (2.7.10), les imports de email.MIMEMultipart ou email.MIMEText échouent, il faut utiliser à la place:


    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText

    Répondre
  4. Joe

    Bonjour,

    Est-il possible de passer le message directement en argument de l’appel du script python ? Là j’ai l’impression qu’il faut à chaque fois éditer le script pour modifier le message et ensuite l’exécuter.

    Merci

    Répondre
  5. Romain

    Bonjour,

    Tout d’abord merci pour votre programme, il m’a été très utile.
    Cependant je rencontre un problème lorsque j’essaie de faire marcher le troisième : il y a un problème à la ligne 21 :

    “(unicode error)’unicodeescape’ codex can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape”

    Savez vous d’où cela peut-il venir ?
    Merci d’avance

    Répondre
  6. LIGIER

    Bonjour,
    Y’a t il une limite du nb de destinataires ?
    J’ai essayé de le faire avec 4 destinataires, ça marche très bien mais quand je passe à 60, ça ne marche plus. Savez vous pourquoi ?

    Merci d avance

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *