Màj suite aux remarques de bleizi

merge-requests/22/merge
glevy 2025-06-30 10:21:13 +02:00 committed by bleizi
parent f28988a83a
commit 6f98ceeeee
1 changed files with 47 additions and 37 deletions

View File

@ -9,9 +9,8 @@ et aussi afin de t'épargner l'envoi manuel de centaines de mails
tout en permettant de les personnaliser, tout en permettant de les personnaliser,
des anciens membres du Crans ont écrit un script pour des anciens membres du Crans ont écrit un script pour
envoyer des mails à l'ensemble des adhérent·e·s. envoyer des mails à l'ensemble des adhérent·e·s.
Il se trouve On trouve le script (pour pouvoir l'exécuter) et les templates
[ici](https://gitlab.crans.org/nounous/scripts/-/blob/master/mail/mail_all.py) sur la VM Re2o (`re2o.adm.crans.org`) dans `/usr/scripts/mail`.
(en principe cloné dans `/usr/scripts/mail`).
Ce script utilise le moteur de templates Jinja pour personnaliser les mails Ce script utilise le moteur de templates Jinja pour personnaliser les mails
et nécessite une instance de Re2o. et nécessite une instance de Re2o.
@ -22,31 +21,28 @@ Tout d'abord, allons lire le menu d'aide.
```bash ```bash
---> ./mail_all.py --help ---> ./mail_all.py --help
usage: mail_all.py [-h] [-f RECIPIENTFILE] [-t TEMPLATE] [-s SENDER] [-a] [-A] 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. Mail all générique. Prend un template en argument.
optional arguments: optional arguments:
-h, --help show this help message and exit -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 -t TEMPLATE, --template TEMPLATE
Un template de mail. Fournir le chemin du dossier Un template de mail. Fournir le chemin du dossier
principal du mail, relatif à principal du mail.
/usr/scripts/mail/template/
-s SENDER, --sender SENDER -s SENDER, --sender SENDER
Spécifier un expéditeur particulier. Par défaut Spécifier un expéditeur particulier. Par défaut
respbats@crans.org respbats@crans.org.
--doit Lance effectivement le mail --doit Lance effectivement le mail.
-p, --prev Prévisualise le mail à envoyer -f RECIPIENTFILE, --recipientfile RECIPIENTFILE
Un fichier contenant un destinataire par ligne au
Filtres: format `Prenom;Nom;Email;Params`, avec params au
-a, --allaccess Envoie un mail à toutes les personnes bénéficiant format json.
d'une connexion valide. --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. -A, --alladh Envoie un mail à tou·te·s les adhérent·e·s.
``` ```
## Envoyer un mail à une liste prédéfinie ## 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`, Ce format permet de récupérer le prénom dans la variable `Prénom`,
le nom dans `Nom` et l'email dans `To`. 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 Si un autre format est utilisé qui ne permet pas de récupérer le nom
ou le prénom du destinataire, ou le prénom du destinataire,
mais que l'email est bien accessible, le script fonctionnera quand même. 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 ## 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. Pour envoyer un mail à l'intégralité des adhérent·e·s
Soit tu récupères toi même cette liste et la colle dans un fichier de destinataires, et ancien·ne·s adhérent·e·s,
soit tu utilises l'option `-A`. 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 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 ## Template de mail
@ -133,8 +135,9 @@ sur ce dossier de templates.
* De même, `To` ne devrait pas être modifié et contient `{{To}}`. * 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. * `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. * `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. comme tous les autres fichiers Jinja.
Tu peux par exemple mettre le pseudo pour trier les bounces.
* `body` est le dossier le plus important * `body` est le dossier le plus important
C'est lui le coeur du mail. Il contient C'est lui le coeur du mail. Il contient
deux fichiers `en` et `fr`, qui deux fichiers `en` et `fr`, qui
@ -155,42 +158,49 @@ dans le dossier `template`.
Puis lance le script avec les options suivantes. Puis lance le script avec les options suivantes.
```bash ```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 * L'option `-s` permet de préciser une adresse qui va
recevoir les bounces. recevoir les bounces.
Tu veux ici une mailing list privée, Tu veux ici une mailing list privée,
comme `respbats` (par défaut) ou `bureau`. 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 * L'option `-t` est pour préciser le
template du mail. template du mail.
* L'option `-p` permet de * Sans autre option, le script va
prévisualiser permettre de simuler l'envoi des mails.
et de simuler l'envoi des mails.
Cette option est de toute façon nécessaire
(sauf si tu forces l'envoi du mail).
:warning: :warning:
Les consignes sont répétées pour une bonne raison. 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 Il est fortement recommandé de l'envoyer d'abord à une liste
restreinte de cobayes presque volontaires restreinte de cobayes presque volontaires
(à commencer par toi) pour vérifier que le mail rend bien. (à commencer par toi) pour vérifier que le mail rend bien.
:warning: :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 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é Une fois que le mail est satisfaisant et que tu as bien vérifié
la liste des destinataires concernés la liste des destinataires concernés
(tous ceux que tu visais et seulement eux), tu peux utiliser l'option `--doit`. (tous ceux que tu visais et seulement eux), tu peux utiliser l'option `--doit`.
```bash ```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._