Changes to "Changelog" between 2022-06-03 10:20:18 and 2022-06-03 10:57:18

1
2
3
4
5
6

7


8





9
10
11
12
13
14
15
16
17
18

19
20

21
22
23
24
25
26
27
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
34
35






+
-
+
+

+
+
+
+
+









-
+


+







Prochaines évolutions : voir la [Roadmap](Roadmap)

# Changements apportés aux dernières versions (Changelog)

## Version 1.1.25 (3 juin 2022)

Cette version apporte principalement une refonte de la gestion des e-mails.
Refonte de l'envoi des e-mails :

Côté utilisateur, on peut désormais voir la liste des adresses e-mail invalides ou désinscrites (menu "Message collectif", onglet "Adresses rejetées"). Cette information est également visible sur la fiche du membre. Un membre qui s'est désinscrit peut également se réinscrire.

On peut également utiliser la syntaxe MarkDown ou SkrivML dans le corps des messages collectifs (comme dans les pages web). Dans ce cas le mail sera envoyé au format HTML.

On peut aussi avoir un contenu dynamique des messages, par exemple pour inclure le nom du membre dans le corps du message. Pour cela on peut directement utiliser la syntaxe [Brindille](wiki:Documentation/Brindille) dans le corps du mail. Exemple : `Bonjour {{$nom}}`. Cette fonctionnalité est particulièrement utile combinée à une recherche avancée en SQL par exemple, dans ce cas toutes les colonnes sélectionnées (`SELECT nombre_enfants * 10 AS prix, nom FROM membres`) seront disponibles : `Bonjour {{$nom}}, le prix de la sortie de dimanche pour votre famille sera de {{$prix}} €`.

* Une meilleure vérification des adresses mail lors de la saisie permettra d'éviter certaines fautes de frappe.
* Les membres peuvent se désinscrire des messages (opt-out).
* Nouvelle page "Adresses rejetées" (via l'onglet dans "Message collectif") :
  * possibilité pour un membre de se réinscrire après s'être désinscrit ;
  * visualisation des adresses e-mail qui ont demandé à se désinscrire ou qui sont invalides ;
  * possibilité de demander à un membre de vérifier son adresse e-mail.
* Affichage du statut de l'adresse e-mail sur la fiche du membre (si invalide ou désinscrite)
* Support du SkrivML et du Markdown dans l'envoi de message collectif (dans ce cas l'e-mail sera envoyé en HTML)
* Prévisualisation des messages collectifs avant envoi
* Support des variables Brindille pour personnaliser le contenu des messages collectifs (par exemple `Bonjour {{$nom}}` dans un message collectif affichera le nom du membre)
* Ajout d'un squelette Brindille `email.html` utilisé pour l'envoi des messages en HTML
* Ajout d'un squelette Brindille `email.html` utilisé pour l'envoi des messages en HTML (à personnaliser si besoin)
* Vérification de la validité des serveurs des adresses mail avant envoi
* Blocage par défaut des adresses e-mail mailinblack / spam-en-moins
* Les recherches SQL de membres doivent inclure la table membres (non aliasées) pour pouvoir être utilisées dans l'envoi de message collectif.

* Auto-hébergement : l'envoi d'e-mail peut désormais se faire de manière asynchrone, activer la constante `USE_CRON` dans `config.local.php` et configurer un cron pour lancer le script `scripts/emails.php` toutes les minutes. Sinon les e-mail seront envoyés tout de suite (peut être long quand il y a beaucoup de destinataires).
* Auto-hébergement : possibilité de définir une adresse de retour `Return-Path`
* Auto-hébergement : ajout d'un script qui peut être appelé par le serveur de mail, associé à l'adresse `Return-Path`, permettant de marquer automatiquement les adresses invalides comme telles (les autres messages sont transmis à l'adresse de l'association)
* Auto-hébergement : ajout d'une API HTTP (`/admin/handle_bounce.php`) qui peut recevoir un message et l'analyser pour marquer les adresses invalides (pour les serveurs de mail permettant de faire une requête HTTP à réception d'un mail)

ATTENTION : en auto-hébergement, si vous avez activé `USE_CRON` il faut désormais ajouter un appel au script `scripts/emails.php` (toutes les minutes) pour que l'envoi de mails se fasse. Voir la [documentation sur la configuration](Configuration) pour les détails.