Mailsubscribers

Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email.

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 courier électronique.

Pour les développeurs, 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 Redacteurs 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 raffraichissez 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 personalisant 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 desinscrit, 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 « desabonné » 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

A chaque fois qu’une adresse email est inscrite ou desinscrite, 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 elements 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ésaprobation d’avoir été inscrite à son insu (à tort ou à raison).

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.

Notes

[1à partir de la version 1.6.0

[2Cette fonction necessite la présence du plugin SPIP-Bonux

[3les adresses mails des desinscrits sont obfusquées par un md5 pour des raisons de confidentialité

[4Cette fonction necessite la présence du plugin SPIP-Bonux

[5réserver cet usage au transfet d’inscrits d’un site à un autre, et ne pas en profiter pour importer des adresses qui n’ont pas explicitement demandé à être inscrites

Discussion

166 discussions

  • 1

    J’ai activé une liste avec simple opt-in sur un site (spip 3.1, MailSubscribers 2.9.4 ).
    Sauf que les inscrits restent en non inscrits, je dois ouvrir chaque « inscrit », ouvrir sa page, et cocher la case de la liste pour qu’il passe pour de bon en inscrit validé...!
    Fastidieux

    du coup j’ai activé le double opt in, j’espère que ça va mieux marcher.

    Je viens de faire la mise à jour MailSubscribers, peut-être ça ira mieux ?
    merci

    • J’ai testé du coup, et chez moi le double opt in semble ne pas marcher.
      J’ai inscrit un email (après mise à jour des plugins), mais je ne reçois pas l’email pour confirmation, et il n’apparaît pas dans /ecrire/ ?exec=mailsubscribers
      du coup j’ai remis simple opt in, au moins les inscriptions ne sont pas « perdues ».

      je ne vois pas de quoi ça pourrait venir. Sur d’autres sites que j’avais ça semblait marcher.

    Répondre à ce message

  • 2

    Bonjour,
    Le mail de confirmation d’inscription à la newsletter commence ainsi :

    Inscription à la liste « #11 »
    Bonjour,
    ...

    Est-ce qu’il y a moyen de remplacer l’ID de la liste par son titre ?

    merci d’avance

    • La dernière version du plugin permet de définit un « titre public » pour chaque liste, qui est utilisé dans les mails et les affichages aux inscrits quand il est défini, à la place du numéro

    • Ah ok, merci c’est super

    Répondre à ce message

  • Re-bonjour,

    Avec le double opt-in, il y a pas mal d’adresses à moitié inscrits, jamais confirmés. Est-ce qu’il y a moyen de renvoyer le mail pour confirmation ?

    merci pour vos lumières

    Répondre à ce message

  • 1

    Maïeul me suggère de poster ma question ici plutôt que sur la page de Formidable :

    Je viens de voir qu’il y avait la possibilité d’ajouter un champ « Inscription aux listes » dans la création d’un formulaire.
    Ça m’intéresse beaucoup pour éviter d’avoir 2 formulaires à faire remplir sur la même page (1 formulaire avec tous les champs voulus + 1 pour l’inscription à une newsletter).

    Mais je ne vois pas trop comment brancher ça sur les inscriptions.

    Est-ce que l’utilisateur qui indique son adresse mail dans un champ email du formulaire (champ à définir ?) peut être ainsi inscrit à une liste de diffusion listée dans les options du champ « Inscription aux listes » ?
    Et dans ce cas il n’y a pas de double opt-in ?

    Il n’y a pas mention des listes de diffusion dans l’email reçu par l"administrateur même si une liste est indiquée par défaut dans les paramètres du champ.

    Merci

    • Bon ben j’y arrive pas
      J’ai essayé avec l’option de synchronisation en créant 1 liste visiteur (6forum) et en la branchant sur les champs du formulaire formidable - sans succès :

      En m’inspirant de mailsubscribers.php j’ai créé un fichier mes_fonctions.php qui contient :

      <?php
          function mailsubscribers_synchro_list_newsletter_6forum() {
          $auteurs = sql_allfetsel("valeur", "spip_formulaires_reponses_champs", "nom=" . sql_quote("input_13"));
          return $auteurs;
      }
      ?>

      Est-ce parce que le nom du champ de la table spip_formulaires_reponses_champs qui contient l’email est « valeur » et pas « email » ?

      Les autres listes synchronisées automatiquement fonctionnent.

    Répondre à ce message

  • Bonjour,
    et merci.
    J’utilise ces plugis sans pb avec mailjet
    Est-il possible de différencier les emails désinscrits automatiquement car considérés comme fail ou spam par mailjet des désinscriptions « manuel » réalisé à partir du lien de la newsletter

    Bruno

    Répondre à ce message

  • 2

    Bonjour,
    Sur un site avec plusieurs listes de diffusion lorsqu’un destinataire clique sur le lien de désinscription en bas d’une newsletter reçuel il arrive sur la page du site /spip.php ?action=unsubscribe_mailsubscriber&email=nom%40site.org&arg=6a6f869xxxxx

    et le message est :
    Veuillez confirmer la désinscription de l’adresse email nom@site.org de la liste
    « nom de la liste » en cliquant sur le bouton : « Me désinscrire de TOUTES les newsletters »

    ce ne devrait pas être plutôt
    « Me désinscrire de CETTE newsletter » ?

    Car là il est désinscrit de tout.

    • Si il n’y a plus qu’une seule inscription le bouton porte la mention « TOUTES », si il reste plusieurs inscription il y a un bouton « CETTE » et un bouton « TOUTES ».

      On privilégie le fait de rassurer l’utilisateur sur le fait qu’il ne recevra plus de SPAMs

    • Hello,
      Bon je viens de tester avec une adresse mail qui était abonnée à 2 listes de diffusion.
      J’ai cliqué sur « me désinscrire » en bas d’1 infolettre reçue et ai validé
      "Veuillez confirmer la désinscription de l’adresse email web@site.org de la liste Nom de la liste en cliquant sur le bouton : « Se désinscrire de TOUTES les newsletters »
      Le message qui s’affiche est « L’adresse email web@site.org a bien été retirée de notre liste de diffusion. »

      et dans l’admin je vois que l’adresse mail a été désinscrite de TOUTES les listes. J’ai reçu un mail de confirmation de désinscription pour 1 liste. Il y a la mention « dans 4 minutes
      Obfusquer email #140 »

      Je n’ai pas de formulaires perso installés. Tous les plugins sont à jour sur un SPIP 3.2.1 [23954]

      Je vois pas ce qui cloche, ou s’il y a une option quelque part pour que cela fonctionne.

    Répondre à ce message

  • Bonjour et merci pour ce plugin
    Je l’utilise sans pb.
    Cependant, j’ai créé avec « champs extra » des champs supplémentaires (prénom, ....)
    Pas de pb quand on veut ajouter « manuellement » un contact
    Mais est-il possible d’utiliser l’import et que ces champs soient prises en compte
    Par avance merci

    Répondre à ce message

  • 10
    BBAK-LUDO

    Bonjour,
    J’ai une erreur, sur l’importation des inscrits.
    Je mets le fichier et après j’ai ça. aucun fichier choisi.
    mais j’ai un fichier.
    **************
    Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.
    Fichier à importer
    Cette information est obligatoire
    *********************
    Vous avez une solution merci d’avance.

    • Bonjour,

      j’ai exactement le même problème, lorsque j’ajoute manuellement un nouvel abonné, j’ai une erreur saisie :

      « Il y a 1 erreur dans votre saisie, veuillez vérifier les informations. »

      Alors que tous les champs sont correctement remplis !

      Pareil dans la partie publique.

      La version de MailSubscribers : 2.9.0

      Merci d’avance pour votre aide

    • Qulle version de SPIP/PHP ? je ne reproduit pas...

    • est-ce que par hasard il te dirait pas que l’adresse email est deja existante ?

    • Pour ma part 7.0.30-0+deb9u1 et SPIP 3.1.8
      Non tous les mails que j’ai testés ne se trouvent pas dans le système !

      j’ai désactivé tous les plugins et réactivé le tout au fur et à mesure et le problème vient de Champs Extras (Interface) version 3.5.3, qui n’est apparemment pas compatible.

      Je ne sais pas si ça vient de MailSubscribers ou de champs Extras !

      Merci d’avance,

      Hicham

    • C’est dejà une piste. Cela étant, même avec champs extras je ne reproduis pas. J’imagine que cela peut venir d’une config spécifique de champs extras.

      peut tu me les exporter (le type de champ, pas le contenu) ?

    • Pas de problème,voici un export PHP :

      <?php
      if (!defined("_ECRIRE_INC_VERSION")) return;
      
      function monplugin_declarer_champs_extras($champs = array()) {
      
              // Table : spip_mailsubscribers
              if (!is_array($champs['spip_mailsubscribers'])) {
                      $champs['spip_mailsubscribers'] = array();
              }
      
              $champs['spip_mailsubscribers']['age'] = array(
                              'saisie' => 'radio',
                              'options' => array(
                                      'nom' => 'age',
                                      'label' => 'Quel âge avez-vous ?',
                                      'datas' => array(
                                              'entre 16 et 18 ans' => 'Entre 16 et 18 ans',
                                              'entre 19 et 25 ans' => 'Entre 19 et 25 ans',
                                              'plus de 25 ans' => ' Plus de 25 ans',
                                      ),
                                      'sql' => 'text DEFAULT \'\' NOT NULL',
                                      'rechercher_ponderation' => '2',
                              ),
                      );
      
              $champs['spip_mailsubscribers']['secteur'] = array(
                              'saisie' => 'radio',
                              'options' => array(
                                      'nom' => 'secteur',
                                      'label' => 'Quel est votre secteur d\'activité ?',
                                      'datas' => array(
                                              'étudiant' => 'Étudiant',
                                              'enseignant' => 'Enseignant',
                                              'responsable jeunesse' => 'Responsable jeunesse',
                                              'autre' => 'Autre',
                                      ),
                                      'sql' => 'text DEFAULT \'\' NOT NULL',
                                      'rechercher_ponderation' => '2',
                              ),
                      );
      
              $champs['spip_mailsubscribers']['autre'] = array(
                              'saisie' => 'input',
                              'options' => array(
                                      'nom' => 'autre',
                                      'label' => 'Veuillez préciser',
                                      'type' => 'text',
                                      'afficher_si' => '@secteur@=="autre"',
                                      'size' => '30',
                                      'autocomplete' => 'defaut',
                                      'obligatoire' => 'on',
                                      'sql' => 'text DEFAULT \'\' NOT NULL',
                                      'rechercher_ponderation' => '2',
                              ),
                      );
      
              return $champs;
      }
    • C’est un bug au niveau du afficher_si.

      Lorsque le afficher_si est masqué, le plugin essaie quand meme de voir s’il est obligatoire.

      Cela m’étonne qu’on ait encore ce bug. Je vais regarder.

    • Pour info, j’ai désactivé tous les plugins et réactivé seulement :

      • Champs Extras 3.11.5
      • Champs Extras (Interface) 3.5.3
      • MailShot 1.26.0
      • MailSubscribers 2.9.0
      • Newsletters 1.5.5

      Et j’ai toujours le même souci :
      « Il y a 1 erreur dans votre saisie, veuillez vérifier les informations. »

    • Ok parfait, au moins on sait d’où vient le problème !
      Pour le moment j’ai désactivé le afficher_si, mais c’est une fonctionnalité nécessaire je pense.

      Merci pour ton suivi !

    • Il se confirme que c’est bien chaamps extra qui pose problème. Sa vérification des valeurs ne passe pas par l’API de Saisies. Or cette API, normalisé, prend en compte les afficher_si, ce qu’il n’est pas présentemment le cas.

      Il faudrait reporter le problème sur le forum de champs extras.

    Répondre à ce message

  • Hello,

    Je signale que pour moi la syntaxe

     <formulaire|newsletter_subscribe|listes=listeIDnumerique>

    ne fonctionne pas : les emails de confirmation d’inscription ne partent pas.

    A la place j’ai indiqué l’identifiant textuel de la newsletter

     <formulaire|newsletter_subscribe|listes=maliste>

    et cela fonctionne

    Enfin je pense que c’est ça car j’ai tout testé (facteur, SMTP,..) pendant 2 heures pour trouver la solution.

    dd

    Répondre à ce message

  • Bonjour à tous,

    Je cherche à importer un fichier CSV avec des adresses mails.

    Le premier, impeccable, il fait 512 adresses.
    Le deuxième de 1400... Je me retrouve aussi avec 512 inscrits ! Dans la prévisualisation, tout est bon, j’ai le bon nombre et les bons emails... puis... Plus le bon nombre dans l’import fini...

    Bizarre, non ?

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 4 octobre 2018