Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Envoi de courriels massifs avec Python

- 238 mots - Temps de lecture estimé: 1 minute

Offre de formation

ChouetteDresse ta chouette et évite le spamChouette

Tes infolettres tombent dans le spam ? Comprends le parcours technique d'un courriel et configure tes enregistrements DNS pour que tes messages se rendent à destination.

Reprends le contrôle de tes courriels


Sun Face IconComment envoyer des courriels personnalisés en masse avec Python ?Sun Face Icon


Python permet d’envoyer des courriels massifs personnalisés via les librairies smtplib, csv et email.mime. On lit une liste de destinataires depuis un fichier CSV (prénom, nom, courriel), on itère sur chaque ligne pour créer un message MIMEText personnalisé, puis on l’envoie via SMTP. Une pause entre les envois avec la librairie time évite d’être marqué comme spam par les serveurs de messagerie.

Il est possible d’envoyer des courriels massifs personnalisés avec un script Python.

Pour ce faire, on inclut tous les éléments de personnalisation dans un fichier csv, ensuite, on itère sur chaque ligne de ce fichier pour produire un courriel et l’envoyer.

Le fichier CSV peut, par exemple, contenir les colonnes suivantes:

On utilise les librairies Python suivantes:

import csv
import time
import smtplib
import email.utils
from email.mime.text import MIMEText

Soit chemin_csv une variable qui contient le chemin du fichier CSV, on produit une liste de dictionnaires comme suit:

with open(chemin_csv, 'r') as csvfile:
    csvreader = csv.DictReader(csvfile, delimiter=',')
    for row in csvreader:
        # Code pour chaque courriel ici

On définit ensuite les variables suivantes:

sujet_courriel = 
nom_expediteur = 
courriel_expediteur = 
serveur_smtp = 
port_smtp = 

Pour produire un courriel, on crée un objet MIMEText contenant le corps du message

        msg = MIMEText("""
        Bonjour {p} {n},
        Voici un courriel personnalisé
        """.format(p=row['Prénom'],n=row['Nom'])

On ajoute ensuite l’expéditeur, le destinataire et l’objet du courriel

        msg['To'] = email.utils.formataddr(("{p} {n}".format(p=row['Prénom'],n=row['Nom']), row['Courriel']))
        msg['From'] = email.utils.formataddr((nom_expediteur, courriel_expediteur))
        msg['Subject'] = sujet_courriel

On peut maintenant expédier le courriel. Il faut cependant avoir accès à un serveur SMTP

        try:
           smtpObj = smtplib.SMTP_SSL(serveur_smtp,port_smtp)
           smtpObj.set_debuglevel(True)
           smtpObj.login("","")
           smtpObj.sendmail(courriel_expediteur, [row['Courriel']], msg.as_string())
           print("Courriel envoyé avec succès")
        except smtplib.SMTPException:
           print("Erreur dans l'envoi du courriel")

Enfin, afin d’éviter d’être identifié comme spam, il est recommandé de mettre un délai entre les envois de courriels

        time.sleep(5)

Offre de service

Shooting Stars IconConfiguration Express — 1 heure — 245 $Shooting Stars Icon

Un problème de configuration qui te semble insurmontable ? Environ une heure, en moyenne, je configure tes courriels, DNS, accès et conformité loi 25. Les suivis sont inclus pour valider ou corriger des configurations additionnelles au besoin. Tu repars avec une solution fonctionnelle, pas un devis.

Règle ton problème maintenant — 245 $
Abonne-toi au fil RSS pour ne rien manquer.

Étiquettes