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,
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._