diff --git a/howto/mail_all.md b/howto/mail_all.md index 218d30d..49c135e 100644 --- a/howto/mail_all.md +++ b/howto/mail_all.md @@ -9,9 +9,8 @@ et aussi afin de t'épargner l'envoi manuel de centaines de mails tout en permettant de les personnaliser, des anciens membres du Crans ont écrit un script pour envoyer des mails à l'ensemble des adhérent·e·s. -Il se trouve -[ici](https://gitlab.crans.org/nounous/scripts/-/blob/master/mail/mail_all.py) -(en principe cloné dans `/usr/scripts/mail`). +On trouve le script (pour pouvoir l'exécuter) et les templates +sur la VM Re2o (`re2o.adm.crans.org`) dans `/usr/scripts/mail`. Ce script utilise le moteur de templates Jinja pour personnaliser les mails et nécessite une instance de Re2o. @@ -22,31 +21,28 @@ Tout d'abord, allons lire le menu d'aide. ```bash ---> ./mail_all.py --help usage: mail_all.py [-h] [-f RECIPIENTFILE] [-t TEMPLATE] [-s SENDER] [-a] [-A] - (--doit | -p) + [--doit] Mail all générique. Prend un template en argument. optional arguments: -h, --help show this help message and exit - -f RECIPIENTFILE, --recipientfile RECIPIENTFILE - Un fichier contenant un destinataire par ligne. Les - formats acceptés sont : `Prenom;Nom;Email`, - `Prenom;Email`, ou tout simplement `Email`. Override - tous les filtres. -t TEMPLATE, --template TEMPLATE Un template de mail. Fournir le chemin du dossier - principal du mail, relatif à - /usr/scripts/mail/template/ + principal du mail. -s SENDER, --sender SENDER Spécifier un expéditeur particulier. Par défaut - respbats@crans.org - --doit Lance effectivement le mail - -p, --prev Prévisualise le mail à envoyer - -Filtres: - -a, --allaccess Envoie un mail à toutes les personnes bénéficiant - d'une connexion valide. + respbats@crans.org. + --doit Lance effectivement le mail. + -f RECIPIENTFILE, --recipientfile RECIPIENTFILE + Un fichier contenant un destinataire par ligne au + format `Prenom;Nom;Email;Params`, avec params au + format json. + --to {adherent,access,club,everyone} + Sélectionne les destinataires du mails parmi un filtre + prédéfini. -A, --alladh Envoie un mail à tou·te·s les adhérent·e·s. + ``` ## Envoyer un mail à une liste prédéfinie @@ -76,7 +72,9 @@ dans le sujet du mail, utile pour trier les bounces. Ce format permet de récupérer le prénom dans la variable `Prénom`, le nom dans `Nom` et l'email dans `To`. -Ces variables sont utilisables dans le remplissage du template. +Ces variables sont utilisables dans le remplissage du template, +en les insérant entre double accolades. +Par exemple, {{prenom}}. Si un autre format est utilisé qui ne permet pas de récupérer le nom ou le prénom du destinataire, mais que l'email est bien accessible, le script fonctionnera quand même. @@ -84,11 +82,15 @@ Attention tout de même à avoir un mail cohérent. ## Envoyer un mail général aux adhérent·e·s -Pour envoyer un mail à l'intégralité des adhérent·e·s c'est très simple. -Soit tu récupères toi même cette liste et la colle dans un fichier de destinataires, -soit tu utilises l'option `-A`. +Pour envoyer un mail à l'intégralité des adhérent·e·s +et ancien·ne·s adhérent·e·s, +utile si une coupure des services est prévue, +c'est très simple. +Soit tu récupères toi même cette liste et la colles +dans un fichier de destinataires, +soit tu utilises l'option `--to everyone`. De même tu peux envoyer un mail aux adhérent·e·s à jour de cotisation -avec l'option `-a`. +avec l'option `--to adherent`. ## Template de mail @@ -133,8 +135,9 @@ sur ce dossier de templates. * De même, `To` ne devrait pas être modifié et contient `{{To}}`. * `From` contient le champ `From` du mail à envoyer. Tu peux mettre ce que tu veux. * `Subject/fr` est, comme son nom l'indique, le fichier définissant le sujet du mail. - Il est aussi personnalisable à l'aide de variables, + Il est aussi personnalisable à l'aide de variables comme tous les autres fichiers Jinja. + Tu peux par exemple mettre le pseudo pour trier les bounces. * `body` est le dossier le plus important C'est lui le coeur du mail. Il contient deux fichiers `en` et `fr`, qui @@ -155,42 +158,49 @@ dans le dossier `template`. Puis lance le script avec les options suivantes. ```bash -./mail_all.py -s 'bureau@crans.org' -A -t AGO_2020 -p +./mail_all.py -s 'bureau@crans.org' --to adherent -t AGO_$année ``` * L'option `-s` permet de préciser une adresse qui va recevoir les bounces. Tu veux ici une mailing list privée, comme `respbats` (par défaut) ou `bureau`. -* L'option `-A` active l'envoi du mail à l'ensemble des adhérent·e·s. +* L'option `--to adherent` active l'envoi du mail à l'ensemble des adhérent·e·s + à jour de cotisation. * L'option `-t` est pour préciser le template du mail. -* L'option `-p` permet de - prévisualiser - et de simuler l'envoi des mails. - Cette option est de toute façon nécessaire - (sauf si tu forces l'envoi du mail). +* Sans autre option, le script va + permettre de simuler l'envoi des mails. :warning: Les consignes sont répétées pour une bonne raison. -Prends bien le temps de lire et de faire relire le mail avant qu'il ne parte. +Prends bien le temps de lire et de faire relire le mail +avant qu'il ne parte. +Vérifie, revérifie et fais re-revérifier la date, le jour, +l'année et l'heure, +aussi bien dans la version française qu'anglaise, +dans le corps du mail comme dans son sujet. Il est fortement recommandé de l'envoyer d'abord à une liste restreinte de cobayes presque volontaires (à commencer par toi) pour vérifier que le mail rend bien. :warning: -Lance le script dans un `screen` pour que son exécution se passe bien jusqu'au bout. +Lance le script dans un `screen` ou un `tmux` pour qu'il s'exécute +sans erreur jusqu'au bout. Le script va faire la petite centaine d'envois un par un, -le risque d'interruption au milieu n'est jamais négligeable. +avec un délai de quelques secondes entre chaque envoi afin de +ne pas être pris pour un serveur de spam. +Au total, il faut prévoir plusieurs heures pour l'ensemble des envois, +le risque d'interruption au milieu n'est donc jamais négligeable. Une fois que le mail est satisfaisant et que tu as bien vérifié la liste des destinataires concernés (tous ceux que tu visais et seulement eux), tu peux utiliser l'option `--doit`. ```bash -./mail_all.py -s 'bureau@crans.org' -A -t AGO_2020 --doit +./mail_all.py -s 'bureau@crans.org' --to adherent -t AGO_$annee --doit ``` -Le mail_all part alors vivre sa vie de mail_all. +Le `mail_all` part alors vivre sa vie de `mail_all`. -_Documentation très largement reprise de contributions du Wiki._ +_Documentation très largement reprise de contributions du Wiki, avec quelques mises à jour par bleizi._