Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de diffusion (simplifiées) permettant de cibler des listes d’inscrits au cas par cas dans les envois en nombre par courrier électronique.
Pour les développeur/euses, ce plugin implémente la partie subscribe de l’API Newsletter et peut donc être utilisé avec les plugins Newsletters et Mailshot pour l’envoi de Newsletters.
Installation
Le plugin s’installe classiquement, et ne nécessite pas d’autre plugin pour fonctionner. Cependant, si vous souhaitez importer et exporter des listes d’abonnés au format CSV, vous devrez installer le plugin complémentaire SPIP Bonux.
Configuration
Vous pouvez configurer ce plugin pour l’adapter à vos besoins.

Opt-in
Vous pouvez choisir le fonctionnement en simple Opt-in ou double Opt-in :
- en simple opt-in : il suffit pour s’inscrire que la personne renseigne son email dans un formulaire d’inscription explicitement dédié à l’envoi d’informations par mail, ou qu’il coche une case “je veux m’inscrire à la Newsletter” dans un autre formulaire (inscription comme redacteur dans le site par exemple) ;
- en double opt-in : l’inscription est mise en attente suite à cette première étape, et un email est envoyé sur l’adresse courriel renseignée, demandant de cliquer sur un lien pour confirmer l’inscription. Il y a donc une étape de vérification.
Le mode double opt-in permet d’avoir une base d’inscrits de meilleure qualité. Il évite les inscriptions forcées, pour le compte d’autrui, ainsi que d’inscrire une adresse email erronée (faute de frappe). Ce mode est nécessaire dans certain pays pour être en accord avec la loi. En France le simple opt-in suffit, mais il est recommandé d’utiliser le double opt-in.
Inscription à la Newsletter lors de l’inscription au site
Si vous activez cette option, une case à cocher sera automatiquement ajoutée sur le formulaire d’inscription au site pour permettre l’inscription à la Newsletter en même temps.

Listes de diffusion
Pour chaque liste, indiquez un identifiant (lettres et chiffres uniquement) ainsi qu’un libellé explicite. Vous pouvez a posteriori fermer une liste : dans ce cas il n’est plus possible de s’y inscrire, mais vous conservez tout de même la liste des inscrits en base de donnée.
Par défaut, il n’y a qu’une liste de diffusion disponible, avec l’identifiant newsletter.
Listes de diffusion automatiques
Il est possible d’avoir des listes de diffusion dont les abonnés sont automatiquement synchronisées avec d’autres tables ou même d’autres bases [1]. Le plugin permet par exemple de créer les listes automatiques des Administrateurs, des Rédacteurs et des Visiteurs du site.

Si vous cochez la liste des Administrateurs en Enregistrez, elle apparaîtra avec une mention précisant que cette liste est synchronisée automatiquement. Si vous rafraichissez la page quelque minutes plus tard (ce n’est pas immédiat car la synchronisation est faite en tache de fond), le nombre d’abonnés apparaitra.

Vous pouvez aussi définir votre propre liste automatique synchronisée. Pour cela, créez la liste avec un identifiant et un nom qui vous conviennent, puis ajoutez dans votre fichier mes_fonctions.php
la fonction mailsubscribers_synchro_list_newsletter_xxx()
que vous aurez créé (en remplaçant xxx
par l’identifiant de votre liste).
Cette fonction devra retourner un tableau d’abonnés, chacun étant décrit par un tableau avec
- l’entrée obligatoire email
- les entrées facultatives nom et prenom.
Ces données peuvent venir aussi bien d’une table SQL, d’un fichier texte, CSV, d’une autre base de donnée…
Le plugin synchronisera alors automatiquement 1 fois par jour les abonnés avec la liste fournie par votre fonction, et vous pourrez envoyer des Infolettres sur ces listes toujours à jour.
Inscription-désinscription sur le site public
Le plugin ne propose par défaut aucune page d’inscription pour le site public. Vous devez ajouter le formulaire d’inscription et désinscription dans votre squelette.
Formulaire d’inscription
Vous pouvez insérer simplement le formulaire d’inscription dans votre squelette avec la balise #FORMULAIRE_NEWSLETTER_SUBSCRIBE
. L’inscription se fera sur la liste par défaut newsletter
.

Le formulaire est volontairement le plus simple possible se limitant à un label et un champ de saisie (automatiquement rempli par l’adresse email du visiteur si identifié). Cela vous permet d’ajouter un titre à votre guise. Vous pouvez modifier le libellé du bouton en personnalisant la chaine de langue bouton_subscribe
.
Pour proposer l’inscription sur une autre liste ou plusieurs listes, indiquez l’identifiant de la ou les listes en argument de la balise, séparés par une virgule. Les paramètres à passer doivent être entre guillemets. Par exemple :
#FORMULAIRE_NEWSLETTER_SUBSCRIBE{
"newsletter,nouveautes",
"checklist" }
Lors de son inscription, l’internaute reçoit un email d’information (ou de confirmation si double opt-in).
Comme pour tous les formulaires, il est possible d’insérer le formulaire d’inscription à l’intérieur du texte d’un article, plutôt que dans un squelette, au moyen de l’appel de modèle suivant :
<formulaire|newsletter_subscribe|listes=liste1| ... >
Formulaire de désinscription
Comme pour le formulaire d’inscription, le formulaire de désinscription s’insère avec #FORMULAIRE_NEWSLETTER_UNSUBSCRIBE
. Vous pouvez indiquer la ou les listes concernées en argument : #FORMULAIRE_NEWSLETTER_UNSUBSCRIBE{"newsletter,nouveautes"}

Vous pouvez modifier le libellé du bouton en personalisant la chaine de langue bouton_unsubscribe
.
Lors de sa désinscription, l’internaute reçoit un email d’information. Si il n’est plus abonné à aucune liste, son adresse email est obfusquée, transformée en md5 de son email avec le domaine @example.org. Cela permet de préserver l’anonymat des désinscrit, mais de les garder en base pour éviter de les réinscrire par erreur en cas d’import d’adresses par exemple.
Administration des inscrits
Liste des inscrits
La liste des inscrits est disponible dans l’espace privé, depuis le menu Activité > Inscrits aux envois par email

Inscription
Vous pouvez inscrire une adresse email manuellement depuis l’espace privé en sélectionnant “Ajouter une inscription”.

Vous devrez renseigner a minima l’adresse email et une liste de diffusion. L’inscrit sera par défaut “pas inscrit” et vous devrez modifier son statut pour l’inscrire réellement.
Lorsque vous modifiez le statut par ce formulaire d’édition, aucun courriel de notification n’est envoyé à l’adresse email concernée.
En revanche, dans tous les autres cas l’inscrit recevra automatiquement sur son adresse courriel un email de vérification quand vous lui mettez le statut “à confirmer”, et un email d’information si vous lui mettez le statut “abonné”. De même si vous le passez ensuite en “désabonné” un email d’information sera à nouveau envoyé. C’est par exemple le cas quand vous modifiez le statut de l’inscrit par le formulaire de changement dédié à cet effet :

Export des inscrits [2]
Vous pouvez télécharger la liste des inscrits ou de toutes les adresses (y compris les inscrits en attente ou les désinscrits [3]) au format CSV. Chaque colonne correspond à un champ de la table.
Import des inscrits [4]
Vous pouvez importer une liste d’adresse mail à inscrire. Un fichier CSV est attendu, avec en première ligne le nom des champs, selon le même format que celui fournit en export. Si le fichier ne comporte qu’une seule colonne, il sera supposé que ce sont des emails. Cela vous permet d’importer des fichiers textes avec une adresse email par ligne comme les fichiers d’export générés par SPIP-Listes.
Si votre fichier d’import contient une colonne statut, les adresses prendront automatiquement le statut fixé par le fichier. Un email de confirmation ou d’information sera envoyé à chaque adresse importée (sauf si vous cochez l’option pour ne pas notifier lors de l’import).
Si votre fichier d’import ne contient pas de colonne statut, les adresses seront automatiquement inscrites (directement ou via un mail de confirmation selon le réglage de votre opt-in). Cependant, les adresses emails correspondant à des personnes désinscrites ne seront pas ré-inscrites.

Après sélection d’un fichier, le formulaire vous montre une prévisualisation de l’interprétation des données sur les premières lignes du fichier, et vous pouvez lancer l’import si cela vous convient. A cette étape, vous pouvez préciser que cet import doit se faire sans notification des inscrits [5], ou aussi que vous voulez vider la table avant l’import (cas de la mise à jour complète de votre base par un fichier CSV). Cette dernière option ne vous est proposée que si vous êtes webmestre.
Traçabilité des inscriptions
À chaque fois qu’une adresse email est inscrite ou désinscrite, cela provoque l’enregistrement d’une trace dans le champ optin de l’adresse email correspondante. La trace sera enregistrée que l’inscription se fasse sur le site public, ou par un administrateur dans le back-office, ou même par un import de fichier.
La trace contient la date et l’heure de la modification ainsi que les éléments d’identification de la personne qui a réalisé l’action (adresse IP si la personne n’est pas identifiée, ou id_auteur et nom de l’administrateur SPIP).
Le champ optin qui garde cette trace n’est pas éditable, et peut donc être opposé comme justificatif si une personne manifeste sa désapprobation d’avoir été inscrite à son insu (à tort ou à raison).
Newsletter : confirmation d’inscription / reconsentement
Il est possible d’envoyer un message aux abonné
es n’ayant pas ouvert un seul mail depuis 1 an afin de leur demander de confirmer explicitement leur inscription et ainsi éviter de continuer à envoyer des newsletters à des gens qui ne les ouvrent pas.Cela s’appuie sur les statistiques des prestataires d’envois des mails ; cela ne fonctionnera donc pas avec un envoi via SMTP, qui n’obtient pas ces informations.
Envoyer le mail
Dans le menu Activité > Listes de diffusion, cliquer sur “Accéder à la gestion d’opt-in”.

Choisir une liste de diffusion pour afficher les adresses qui n’ont pas ouvert de mail ainsi que celles qui ont ouvert mais pas cliqué de liens dedans.
Il possible d’envoyer manuellement, liste par liste, un mail de confirmation à ces adresses.
Ce mail offre le choix de rester abonner ou de se désabonner.
Sans confirmation explicite après 7 jours, les adresses sont automatiquement désabonnées.
Migration depuis un ancien plugin
Si vous utilisiez auparavant l’un des plugins SPIP-Listes, SPIP-Lettres, CleverMail ou MesAbonnés, les inscrits seront automatiquement importés lors de l’installation de MailSubscribers (dans le cas des plugins SPIP-Lettres et CleverMail, les désinscrits sont aussi importés).
Pour cela vous devez avoir encore les tables de ces plugins dans votre base de données. Il vous faut donc désactiver votre ancien plugin, mais surtout ne pas le désinstaller car cela supprime les données.
Après avoir installé le plugin et vérifié que toutes les adresses ont bien été importées, vous pouvez désinstaller votre ancien plugin pour supprimer ses données si vous le souhaitez.
Discussions by date of activity
222 discussions
Bonjour,
Je cherche un solution simple (codé en dur) pour ajouter le champ de saisie Nom et son label sur le formulaire par défaut « Inscription à la newsletter » (#FORMULAIRE_NEWSLETTER_SUBSCRIBE) de MailSubscribers sans avoir à installer Formidable ou Champ Extras et toute la « flopée » de plugins dépendants.
Sachant que dans la liste « Inscrits aux envois par email » le champ « Nom » existe déjà:
- Email
- Nom
- Langue
- Listes
Je suppose qu’il me faut ajouter quelques lignes de code dans les fichiers:
/mailsubscribers/formulaires/newsletter_subscribe.php
/mailsubscribers/formulaires/newsletter_subscribe.html
Merci pour votre aide :)
Reply to this message
Je souhaite pouvoir gérer l’inscription ou la désinscription à une liste d’un utilisateur depuis son profil. Case à cocher par exemple. Comment procéder ?
Reply to this message
Bonjour,
J’ai un souci à l’import de fichiers csv, peut-être y-a-t-il quelque chose que je fait mal.
J’ai un fichier csv toto.csv correctement formaté (l’import se fait sans problème) que je veux importer dans une liste listeA que j’ai créée au préalable.
Je lance l’import qui se fait bien dans listeA mais Spip me crée une seconde liste appelée toto.csv, les contacts importés sont dans les 2 listes.
Ma première parade a été de ne pas créer de liste au préalable, d’importer sans désigner de liste et après l’import de renommer la liste créée toto.csv en listeA. Ça marche sans problème.
Mais ensuite je veux importer une liste de désinscrits à cette même liste listeA, donc j’ai un fichier csv toto_no.csv avec une colonne statut a refuse, j’essaye de l’importer dans listeA: les contacts sont importés dans listeA mais considérés comme inscrits (mais là je me trompe peut-être sur la valeur du statut à utiliser) et surtout aussi dans une liste encore une fois créée automatiquement par Spip appelée toto_no.csv ...
Questions:
- quel est le statut à utiliser pour que l’email importé soit désinscrit ?
- et surtout comment faire que quand on désigne une liste de destination les emails soit importés dans cette liste sans création d’une autre liste ? quelque chose que je fais mal ?
Une précision: Spip 4.3.2, tous plugins à jour.
Merci !
Pierre
Je ne crois pas que tu fait quelque chose de mal, je crois juste que à ce stade ce n’est pas prévue. Je suis régulièrement confronté à ce problème, mais pas suffisament régulièrement pour avoir le temps de m’y pencher...
Bonjour,
Bon update. En fait dans la configuration de Mailsubscribers (qu’on atteint depuis la liste des plugins) il y a une case à cocher “Lorsqu’on importe des adresses emails, ne pas créer automatiquement une liste de diffusion supplémentaire contenant ces emails.” ce qui a résolu mon principal problème, je n’avais pas vu ce réglage (pas sûr de comprendre l’utilité mais bon j’imagine que si ça existe c’est que quelqu’un en a eu besoin ...).
Par contre je ne comprends pas, si je fourni une colonne “statut” à “refuse” les contacts sont importés comme “inscrit”, pas comme “désinscrit” et là je n’arrive pas à comprendre ou est l’erreur.
Merci d’avoir regardé.
Pierre.
Autre update: j’ai testé cet import de désinscrits en fournissant toutes les colonnes nécessaires (avant je n’ajoutais que “statut”), marche pas non plus ...
J’ai une 20 aine de listes à importer avec chacune une partie de désinscrits ... galère.
Pierre
Et encore une update: au moment de l’import quand on est en prévisualisation j’ai l’impression que le statut “refuse” est bien pris en compte car la case à cocher “Valider directement les inscriptions sans demande de confirmation” est absente, par contre quand on fait effectivement l’import les “refuse” sont bien inscrits.
Pierre
Je souhaite pouvoir gérer l’inscription ou la désinscription à une liste d’un utilisateur depuis son profil. Case à cocher par exemple. Comment procéder ?
Reply to this message
Bonjour, comme Arno85,
j’ai intégré le plugin Mailsubscribers (+newsletter et mailshot) à mon site mais lorsque je réalise une inscription à la newsletter, j’ai le message « Vous allez recevoir un email sur l’adresse ..... ; pour confirmer votre inscription. »
mais rien ne se passe. J’ai fait l’essai avec plusieurs adresses.....
coté espace privé la demande apparait dans Activités/inscrits aux envois par mail avec le statut « en attente de confirmation »
Si je valide manuellement ces adresses rien ne change, celle-ci reste en attente de validation
Adresse d’envoi par défaut : Utiliser les réglages du site SPIP
j’ai coché « Forcer cette adresse d’envoi quand le From n’est pas sur le même domaine »
Méthode d’envoi : Utiliser la fonction mail de PHP
lorsque je test le mail part bien et arrive correctement...
J’ai un formulaire de messagerie de base pour les contacts par mail (Formulaire Formidable) qui fonctionne bien.
(Lorsque je teste un envoi de Newsletter ça ne bouge par non plus,
par “Utiliser la fonction mail de PHP” ou par api “mailjet”
please help :)
Reply to this message
Bonjour ,
Deux anomalies constatées pour le multilinguisme (tests faits avec la version 2.16 du plugin):
- la première
A l’inscription , si le nom du site est une valeur de type multi
alors on obtient ce message :
Les balises multi du nom du site ne sont pas traitées.
Les tags multis autour du nom de site ne sont pas visibles, mais sont toujours là.
(Mais le multi du nom de liste est bien rendu .)
script concerné:
action/subscribe_mailsubscriber.php
function action_subscribe_mailsubscriber_dist
Le multi de la liste est interprèté par un appel a typo().
mais pas celui du nom de site
Pour résoudre mon problème
J’ai donc rajouté aussi typo pour ’nom_site_spip’
- seconde anomalie:
Les messages d’inscriptions et de suppression d’une seule liste sont bien dans
la langue associée à l’email
Mais pas le message après suppression de TOUTES les listes : il est dans la langue locale
script concerné:
action/unsubscribe_mailsubscriber.php
Pour la suppression d’une seule liste , l’action est unsubscribe_mailsubscriber
alors un changer_langue dans la langue associée à l’email est fait par la fonction mailsubscribers_verifier_args_action
le message obtenu est dans la bonne langue.
Le cas de suppression de TOUTES les listes fait appel à action/confirm_mailsubscriber.php
qui appelle aussi l’action unsubscribe_mailsubscriber
Mais dans ce cas particulier il n’y a pas appel de mailsubscribers_verifier_args_action.
Donc il n’y a pas de changer_langue et la langue du message (et du mail) est fausse.
Pour résoudre mon problème:
Pour le cas ou le email en argument n’est pas null (cas ou pas d’appel de mailsubscribers_verifier_args_action.)
je reprends la langue depuis la variable $infos[’lang’] qui contient déjà la langue associée à l’email
et fait le changer_langue avec:
Juste pour complément:
Même pb vu à l’inscription , si on passe par confirm_mailsubscriber,
Donc même solution pour action_subscribe_mailsubscriber_dist
Bonjour, Michel.
Je rencontre la même première anomalie (N’ayant qu’une seule liste, je ne suis pas confronté à l’autre.) : un nom_site_spip multilingue affiché en multi.
Pour ta correction, j’imagine que c’est dans action/subscribe_mailsubscriber.php que tu mets
et non dans mes_fonctions.php ?
Personnellement, j’ai « résolu » le truc via un hack CSS assez crade, non accessible, et pas du tout multilingue : j’ai copié minipublic.css dans /squelettes/css/ et y ai ajouté :
Bonne journée.
1138.
Bonjour 1138,
Ca remonte a loin. Ca concernait la version 2.16 du plugin.
La version recente corrige sans doute ces bugs decrits en 2021, mais je n’ai pas teste.
En regardant le code, je vois que j’avais fait un:
squelettes/action/subscribe_mailsubscriber.php
avec l’ajout de
- et un
squelettes/action/unsubscribe_mailsubscriber.php
avec aussi
mais pour unsubscribe_mailsubscriber.php, avant cet appel de typo, j’avais du inserer un
sinon typo etait inconnue.
Mais j’essaierais la version la plus recente.
Bonne journee.
Reply to this message
Bonjour,
La lecture du code m’a permis de découvrir que la liste des newsletters à passer en paramètre au formulaire pouvait aussi être un tableau.
Le code suivant permet de lister toutes les infolettres ouvertes pour pouvoir s’y abonner :
Est-ce que c’est un usage correct et pérenne ?
Reply to this message
Excellent plugin!
Je ne parviens pas à trouver l’endroit où l’on peut modifier les styles css des mails envoyés (c’est à dire de la demande de confirmer l’inscription, la confirmation de l’inscription etc.).
Quelqu’un sait où ces css se cachent ?
Je me reponds à moi même : c’est géré par le fichier texte.html du plugin Facteur, dossier emails...
Reply to this message
Voici Une petite aide en ligne pour aider les usagers à bien formater le csv d’import
Comment formater son csv pour mailsubscriber
Reply to this message
Bonjour,
Une nouvelle question qui se rapproche de ma précédente et qui concerne la synchro, des contacts. Comme tout le monde a dû s’en apercevoir, Mailjet gratuit limite maintenant le nombre de contact enregistrés à 1500.
Dans plusieurs cas, on a des Spip avec genre 500 contacts mais Mailjet nous dit que l’on a plus de 1500 contacts comme si les contacts du Spip avaient été peu à peu accumulés chez Mailjet au fur et à mesure des envois, des modifs de listes, des désinscriptions ...
Donc la question serait de comprendre si Spip synchronise ou pas ses contacts avec Mailjet (on utilise l’API) ? Si ça ne synchronise pas, je peux dans ce cas effacer tous les contacts dans Mailjet et ne plus utiliser leurs contacts (et rester sous la limite des 1500), si ça synchronise alors là ça pose souci, tôt ou tard on arrivera à 1500 contacts.
Merci,
Pierre
Je ne sais pas comment c’est synchronisé, mais j’ai tenté l’expérience suivante : effacé tous les contacts sur le compte mailjet, puis relancé une NL avec spip... la NL a bien été envoyée, et les contacts correspondants ont été ajoutés dans les contacts mailjet. Ouf...
Reply to this message
Bonjour,
On a une adresse email qui fut inscrite à une liste mais qui a été désabonnée il y a de longs mois en arrière, quand je contrôle manuellement dans le back-office elle n’est plus là (je suppose qu’elle fait partie de la liste des désinscrits anonymisés) et pourtant à chaque envoi de newsletter on reçoit un email nous disant que la boite est pleine et que le message ne peut être livré ... c’est d’ailleurs par ce moyen qu’on sait qu’il y a ce problème, on n’a pas reçu de plainte du destinataire (j’imagine sa colère s’il recevait ces emails) ...
Qu’est-ce qui pourrait causer ce genre de souci ? J’ai été jusqu’à faire une recherche globale dans la base de données, cet email n’y est pas et pourtant le mail lui est envoyé. La plateforme d’envoi utilisée est Brevo (Sendinblue), est-il possible que ce soit eux mais ça remet en cause ce que je pensais, c’est à dire que les mails sont envoyés à la liste qui est dans Spip, pas chez Brevo ou autre ...
L’essai suivant que j’envisage c’est de basculer chez Mailjet par ex. mais avant d’aller jusque là je me demandais s’il y avait une raison objective qui pourrait faire que ce genre de chose arrive...
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
