Mailing via GMail avec paperboy

Cette année, pour inviter les parents d’élèves, j’ai utilisé paperboy avec notre compte GMail.

Contexte

Pour la communication externe de l’association de parents d’élèves, on utilise simplement un compte GMail, comme beaucoup sans doute. Et comme chaque année, le collège nous fournit la liste des parents d’élèves qui ont accepté de nous transmettre leurs coordonnées, sous forme d’un classeur XLS.

Classiquement, pour envoyer des mails à l’ensemble de ses parents, c’est un mail par classe, à coup de grand copier coller, en prenant soin de ne pas oublier de mettre les destinataires en BCC pour respecter un minimum de confidentialité. Même si c’est pas hyper long, y’a moyen de se louper plus d’une fois dans le process.

C’est là qu’intervient paperboy, un outil de publipostage en ligne de commande, multi-plateforme, open-source, et capable de fonctionner avec n’importe quel fournisseur SMTP.

Conversion des données

Premier point de départ : la liste des adresses des parents. Pour gérer les destinataires, paperboy utilise un fichier YAML, ce qui permet de stocker l’adresse email, le nom mais aussi toutes les informations que l’on veut pour les réutiliser dans le texte du mailing.

Je me suis donc fabriqué un programme pour passer du fichier XLS classique du collège au fichier YAML. Le fichier de départ consiste en une ligne par élève, avec les coordonnées de ses deux parents. En sortie, je génère un YAML avec une entrée par parent en récupérant la classe concernée, sans gérer le risque de doublon pour les parents ayant deux enfants au collège.

Configuration GMail

# SMTP Server
[smtp]
  url = "smtps://smtp.gmail.com"
  user = "association.parents@gmail.com"
  pass = "xyz"

Note : Pour le mot de passe, il faut utiliser un mot de passe pour application.

Premier message

Il est donc maintenant temps de rédiger le premier message. On utilise du MarkDown, un simple format texte avec quelques conventions. Mais surtout, on va configurer des détails du mailing dans le frontmatter, l’entête du fichier.

---
subject: Assemblée générale de l'association des parents d'élèves
display-name: "{{ .Recipient.Params.surname }} {{ .Recipient.Name }}"
---
Bonjour,

Venez nous rencontrer !
...

Comme le nom et le prénom sont dans deux champs différents, j’utilise une variable pour les combinez dans ce qui servira de texte dans l’adresse du destinataire. Il s’agit d’une évolution que j’ai ajoutée à paperboy et qui, à l’heure ou j’écris, fait encore l’objet de discussions avec l’auteur sur la manière d’intégrer cette fonction.

Conclusion

Par rapport à la solution précédente à base de copies cachées (BCC) j’aime bien la nouvelle solution car le mail est adressé nominativement à chaque destinataire. Je ne sais pas si ça fait beaucoup de différences pour celui qui reçoit, mais j’aime à penser que oui.

Techniquement, mon envoi a échoué environ au bout d’environ 550 emails, GMail considérant que j’avais dépassé la limite quotidienne. J’ai donc dû attendre 24h pour finir le mailing. Cette limite est clairement liée aux nombres de message, plus qu’au nombre de destinataires. En effet, par le passé, j’ai régulièrement pu envoyer un mailing à tous les parents en les regroupant dans des envois par classe : un mail pour tous les parents d’une classe, en copie cachée. Ici, c’est un mail (potentiellement personnalisé) par personne, et ça explose le compteur.

Idée d’évolution : permettre à paperboy de faire des envois groupés.