Abomailmans pour s’abonner à des listes de diffusion

Un plugin qui permet d’interfacer vos listes de diffusions avec votre SPIP. Créé à l’origine pour fonctionner avec le robot Mailman, il a évolué et permet maintenant de gérer aussi les inscriptions aux listes Sympa, Ezmlm et mlmmj.

Principe

Mailman est un outil puissant de mailing liste http://www.gnu.org/software/mailman/. Il peut gérer plusieurs centaines, voir plusieurs milliers d’adresses e-mail, pour une seule liste de diffusion/ discussion. Il manquait à ma connaissance un plugin permettant de l’interfacer avec SPIP, voilà la chose faite.

Une partie de ce plugin est inspirée par le plugin Spip-Listes. Contrairement à ce plugin, Abomailmans laisse la gestion des abonnements, des désabonnements, l’envoi et l’échange d’e-mails à Mailman.

Ce plugin permet via une balise #FORMULAIRE_ABOMAILMAN d’afficher un formulaire d’abonnement à l’ensemble des listes renseignées Mailman. Cette inscription se fait via l’interface privée de SPIP par le menu «Edition > Abomailmans > les listes de diffusions mailman» Ensuite il vous est possible de sélectionner des articles de votre SPIP, par des critères de date, de rubrique et/ou de mot clé et envoyer leurs contenus à ces listes, en utilisant des squelettes de mise en page du contenu.

Le lien avec les listes Mailman se fait par des envois d’e-mail.

Voici comment cela se présente sur la partie publique.

Installation

Copiez le répertoire abomailmans dans votre répertoire plugins, puis installez le plugin selon la procédure habituelle, cf. http://www.spip.net/fr_article3396.html.

Le plugin nécessite les plugins Facteur (spip 2 et spip 3) et spip-bonux (Spip 2)

Placez la balise #FORMULAIRE_ABOMAILMAN dans vos squelettes la ou vous le souhaitez.

Ajouter des listes

Cliquez sur Les listes de diffusion dans le menu «Édition» de l’espace privé

Vous obtenez la page de la gestion de vos listes

Cliquez sur «Ajouter une nouvelle liste», vous obtenez la page d’ajout d’une liste

Renseigner ces champs, veuillez vérifier que l’adresse e-mail de votre liste est bien correcte.

L’ensemble des listes que vous aurez renseignées, vont apparaître dans votre site via la balise #FORMULAIRE_ABOMAILMAN que vous aurez placé dans vos squelettes.

Envoyer du contenu de votre SPIP aux listes

À la page de la gestion de vos listes, cliquez sur «Envoyer un e-mail aux listes à partir du contenu de ce site»

Sélectionnez le modèle de présentation d’e-mail («nouveautés» est présent par défaut). Les modèles se retrouvent dans /(...)/abomailmans/templates/ (Cf. Personnalisation). Vous pouvez choisir de lister :
-  les articles à partir d’une date via «Contenu a partir de cette date»
-  et les articles d’une rubrique via «Et lister les articles de la rubrique»
-  et les articles liés à un mot clé via «Et lister les articles du mot clé»

Renseignez le sujet de votre e-mail, et introduisez le contenu issu du site. Cliquez sur «Aperçu». Ensuite choisissez la liste à laquelle vous souhaitez envoyer cet aperçu

Utilisation par l’internaute

L’internaute saisi son Nom, son Prénom et son adresse e-mail (Obligatoire, un test PHP est effectué sur ce champ), et coche les listes auxquelles il souhaite s’abonner. Ensuite il reçoit éventuellement les demandes de confirmation du gestionnaire de liste. La gestion de son abonnement s’effectuera via ce gestionnaire de liste.

Personnalisation

Vous pouvez créer plusieurs modèles d’envoi d’e-mail à vos listes en les ajoutant dans votre répertoire /(...)/squelettes/templates/.

Ce sont de simples squelettes SPIP, faites attention aux points suivants :
-  ne pas placer les balises d’ouverture et de fermeture html .
-  mettre les styles CSS directement dans les balises pour être sur qu’ils seront interprétés (même par les webmails)
-  les urls et liens images doivent être convertis en urls absolues, utilisez pour ce faire le filtre liens_absolus

Depuis la version 0.7, il est possible de créer aussi un template pour la version texte de votre e-mail. Si votre template de base s’appelle ma_newsletter.html, la version texte devra se nommer ma_newsletter.txt.html

Abonnement à une liste particulière

Il est possible de proposer un formulaire d’inscription ciblant une liste bien précise, au moyen de la balise #FORMULAIRE_ABOMAILMAN_MINI_UNE_LISTE

Exemple d’utilisation, pour permettre l’abonnement à la liste id n°1 :
#FORMULAIRE_ABOMAILMAN_MINI_UNE_LISTE{1}

Cas particulier du gestionnaire de liste EZMLM chez OVH avec de la fonction mail() de PHP

Chez OVH, dans le cas d’envois de mails via un script PHP, le Return-path est réécrit pour pouvoir comptabiliser les erreurs via un robot (gestion des spams). Or, EZMLM se base sur ce champ plutôt que sur le From. Du coup l’abonnement est impossible.

Pour palier à ce souci, Yffic avait fait une bidouille pour que le To soit sous la forme maliste-subscribe-lemail=ledomaine.tld@monsite.tld et que l’inscription fonctionne (voir ici L60). Il faut donc ajouter un define à votre fichier mes_options.php.

  1. define('_ABOMAILMAN_ROBOT_EZMLM','true');

Ce problème est peut être présent chez d’autres hébergeurs...

Détails du code

-  Utilisation de Jquery (inclus dans spip 1.9.2 et +) (http://jquery.com/)
-  Utilisation du plugin JQuery date picker (inclus dans ce plugin) (http://www.kelvinluck.com/assets/jq...)
-  Utilisation du plugin facteur pour Spip > 2

Évolutions envisagées

-  Gestion de listes privées
-  Pouvoir mettre en avant une seule liste
-  Modifier le destinataire d’envoi dans le cas ezmlm pour que les inscriptions fonctionnent si facteur utilise l’envoi via la fonction mail() de php. En effet dans ce cas, le header return-path n’est pas renseigné. Or c’est ce header qui est utilisé par le robot pour répondre et non le champ from... Il faudrait modifier le destinataire comme ceci maliste-subscribe-lemail=ledomaine.tld@monsite.tld

updated on 2 October 2019

Discussion

41 discussions

  • 2

    Bonjour,
    merci pour le plugin, il a l’air de bien fonctionner.
    J’ai des petits questions :

    1/ Une question pour mon template : comment ajouter le lien pour le désabonnement?

    2/ A quoi sert la configuration “État de la liste :Active/Désactivée” ? Dans les deux cas la liste apparait dans le choix pour un envoi qui se déroule sans problème, aussi pour une liste désactivé.

    3/ Est-ce qu’il serai possible de garder une version html du mailing, pour pouvoir proposer que les gens aillent voir en ligne en cas de problème d’affichage? (bon, je présume que non, mais je voulais quand même demander.. )

    merci d’avance
    joz

    • Hello

      1/ : Tu peux rajouter une ligne de ce type en bas de ton template : Si vous désirez vous désabonner de cette newsletter, cliquez ici : [(#URL_ARTICLE{numero de ton article contenant le formulaire d'inscription}|url_absolue)]

      2/ : Si tu désactives la liste, elle n’apparait plus dans l’espace public

      3/ : Oui, j’aimerais bien aussi... Dans une future, mais pas trop, version

    • merci pour la réponse rapide !
      pour la désinscription : comme je met un “email de désabonnement” (maliste-unsubscribe@mondns.org) dans la configuration de ma liste, je m’étais demandée si je peux récupérter cette adresse dans mon template.
      Je préfèrerai pouvoir proposer la déinscription par mail au lieu de renvoyer les gens sur le site pour remplir le formulaire..
      joz

    Reply to this message

  • 1

    Dans la page de gestion d’une liste (pour envoi automatique), je ne trouve pas le champ de formulaire pour lister les articles de la rubrique ou les articles du mot clef ...
    par contre il y a un champ “paramètres” dont je ne connais pas l’utilité ...
    Y a t’il une syntaxe à mettre dans “paramètre” pour programmer rubrique et mot clef ?
    Un autre moyen à utiliser (toucher le squelette, toujours possible !)
    Une autre utilité pour ce champ “paramètres” ?

    SPIP 2.1.16 [19678]
    Abonnement à des listes de diffusion 0.7.7 - stable

    • Hello

      Les paramètres sont envoyés au squelette... Donc normalement si tu indiques id_rubrique=5, la boucle du template nouveautes.html doit renvoyer les articles de la rubrique 5... A tester

    Reply to this message

  • 3

    Bonjour,
    Ce plugin semble très intéressant. Malheureusement une erreur s’affiche lorsque l’on souhaite s’inscrire quelque soit le formulaire utilisé :

    Fatal error: Cannot redeclare class PHPMailer in /home/www/PHPASSO/test/spip_3-0-2/lib/phpMailer/class.phpmailer.php on line 43

    Est-ce normal ?

    SPIP 3.0.2
    Installation des plugins auto

    • Hello

      Facteur embarque avec lui la classe phpMailer (dans plugins/auto/facteur/phpmailer-php5). Mais tu en as une autre dans /lib/phpMailer qui vient d’où ? Un autre plugin ? Y’a une incompatibilité...

    • OK je comprend.
      Je pense que thelia installe la librairie.
      Le problème est que je ne peux pas modifier le plugin facteur vers la librairie. C’est dommage.
      Olivier

    • Pose la question sur la liste spip ou spip-zone pour voir...

    Reply to this message

  • 2

    Bonjour,

    Super plugin, que j’utilise en version 0.7.7 avec Spip 2.1.13 et Facteur 1.8.9

    Il faut pour mon serveur la syntaxe particulière d’Ezmlm :
    maliste-subscribe-lemail=ledomaine.tld@monsite.tld

    D’après ce que j’ai vu dans le fichier /plugins/abomailmans_2_0/inc/abomailmans.php
    ligne 68, que cette syntaxe est adoptée si la constante suivante est définie :
    if (defined(’_ABOMAILMAN_ROBOT_EZMLM’) && ...

    Curieusement, je ne trouve nulle ailleurs constante _ABOMAILMAN_ROBOT_EZMLM !?
    Alors effectivement, elle semble ne jamais être définie, et la syntaxe qu’il me faut n’est jamais adoptée... j’ai remplacé _ABOMAILMAN_ROBOT_EZMLM par true... ça marche mais bon, peut-être que quelque m’échappe ?!...

    Peut-être aussi que ce n’est plus le cas avec Spip 3 et la version du plugin qui va bien...

    ++

    • Hello
      Je n’ai pas eu le temps de mettre la doc à jour. Effectivement il faut que tu rajoutes dans ton fichier config/mes_options.php :

      define('_ABOMAILMAN_ROBOT_EZMLM','true');
    • Génial, merci beaucoup pour cette réponse rapide.

    Reply to this message

  • 4

    toujours pas de trace pour ezmlm chez OVH mutualisé ?

    dans le code abomailmans.php :

    if (defined('_ABOMAILMAN_ROBOT_EZMLM') && preg_match("/subscribe/",$to_email)) {
                    $souscripteur = str_replace("@" , "=" , $email ) ;
                    $to_email = str_replace("@" , "-".$souscripteur."@" , $to_email ) ;

    c’est pas louche pour obtenir un resultat comme ça :

    maliste-subscribe-lemail=ledomaine.tld@monsite.tld

    merci

    • Hello

      Désolé pour le retard. En fait chez OVH, on ne peux pas utiliser la fonction mail de php pour s’inscrire à une liste, car OVH rajoute le return_path : Bounce.... Faut obligatoirement passer par le smtp.

      Moi je crée une adresse smtp@mondomaine.tld dans le manager.

      Puis je configure Facteur :

      • Utiliser SMTP
      • Hôte : ssl0.ovh.net
      • Port : 465
      • Authentification : Oui
      • Utilisateur : smtp%mondomaine.tld
      • MdP : *******
      • Connexion sécurisée : SSL

      Et là ça fonctionne, je viens de retester

      PS : Abomailman est actuellement noté comme stable en Spip3, mais c’est une erreur je pense. Y’a pas mal de trucs dans le privé qui ne fonctionnent pas correctement

    • Haqqtiviste

      ok, super, j’ai essayé hier le smtp, mais ça n’a pas marché, je n’avais pas mis vos paramètres. je vais re essayer. Merci bcp.
      et bonne suite. je vous tiendrais au jus.

    • Haqqtiviste

      si je rempli le champ return path par webmaster@monsite, et bien en fait il demande l’abonnement de l’adresse webmaster@monsite à la liste et non de l’adresse de la personne.

      et si je ne remplie pas ce champ, il envoi la demande de confirmation à la personne qui souhaite s’inscrire ET au gestionnaire de la liste en même temps.

      Bonjour ! Je suis le programme ezmlm. Je m'occupe de la liste de diffusion infos@f-c-p.org.
      
      Pour confirmer que vous souhaitez voir
         abdel.malik@free.fr
      parmi les abonnes de la liste infos, veuillez renvoyer un message
      quelconque a l'adresse suivante:
      
         infos-sc.unchiffre.blabla-abdel.malik=free.fr@f-c-p.org

      je ne pense pas que la personne devrait recevoir cette demande, mais uniquement le gestionnaire de liste.

      cela dit, déjà, c’est fonctionnel. Merci

    • Le fonctionnement que tu décris dépend du paramétrage de la liste chez OVH, pas de ce plugin. Abomailman ne fait qu’envoyer un mail à infos-sc.unchiffre.blabla-abdel.malik=free.fr@f-c-p.org

      Ensuite c’est ezmlm qui dispatche suivant le type de liste

    Reply to this message

  • 4
    Haqqtiviste

    Bonjour
    Dans slip 3, le formulaire apparaît, il nous dit qu’une demande vient d’être envoyée mais côté administration des listes (chez OVH) il ne se passe rien. Pas de nouvel abonné, pas d’envoi d’émail à l’administrateur.

    Merci

    • haqqtiviste

      je me réponds à moi même :
      configuré dans facteur le destinataire.

      MAIS effectivement, il n’y a pas d’interaction avec ma liste chez OVH.
      ça envoi un mail à l’administrateur de la liste, comme un message, qui dit que un telveut s’abonner à telle liste.

      je pense qu’il faut l’ajout du return-path que je ne sais pas faire, dans le fichier envoyer_mail.php de facteur

    • Hello

      Tu as bien renseigné les 2 premiers champs, genre :
      -  newsletter@mondomaine.net
      -  newsletter-subscribe@mondomaine.net
      -  newsletter-unsubscribe@mondomaine.net
      Et laissé vide le 4e ?

      Je viens de ré-installer mon ordi, donc je n’ai plus de spip3 sous la main... Mais je regarde dans la semaine, sinon

    • haqqtiviste

      oui, tout à fait.
      les 3 champs comme ça et le 4è vide

    • haqqtiviste

      oui, tout à fait renseigné comme précisé.

      merci

    Reply to this message

  • 2
    thierry

    Bonsoir,

    Merci pour cette contribution qui est très réussie.
    J’ai installé la dernière version 0.7.4 sur spip 2.1.12 et ça marche très bien.

    Par contre le sujet du courriel ne s’affiche pas dans le corps de la newsletter.
    Curieusement il s’affiche dans l’aperçu mais pas dans le courriel une fois reçu.
    Tout le reste fonctionne.
    J’ai essayé avec les templates nouveautes, nouveautes2 et un template customisé et aucun n’affiche le sujet. Le code de la page html montre que la chaîne n’est pas présente.

    Auriez-vous une idée ? Ca le fait aussi chez vous ?
    Les plugins installés sont Facteur 1.8.5 et SPIP Bonux 2.3.0.

    Merci de votre réponse.

    Thierry

    Reply to this message

  • 3

    Je suis en train de réfléchir à la mise en place de listes de diffusion sur un site. À priori, il y aurait 5 ou 6 listes et un volume de 750adresses environ, chacune pouvant appartenir à une ou plusieurs listes.
    En faisant un peu le tour des solutions existantes, j’avoue ne pas avoir les idées très claires sur la voie à retenir : s’appuyer sur un outil comme SPIP-Liste ou s’appuyer sur un outil comme Mailman que mon hébergeur met à disposition.
    Quelqu’un pourrait-il dire quels sont les avantages et les limites de l’une ou l’autre des solutions : un système intégré à SPIP ? Un système délégué à un outil extérieur ?
    Merci d’avance....

    • Hello

      Je pense que tu devrais poster ta question sur la liste spip-zone

      A+

    • Ah ! cette liste spip-zone je ne connais pas... Je connais spip-user (j’avais effectivement hésité à y poster ma question) et spip-dev (qui n’est pas destinée à ce genre de question), mais spip-zone, c’est où et c’est “fait” pour quoi ?

    • http://listes.rezo.net/mailman/listinfo/spip-zone

      C’est surtout pour discuter des plugins et de leurs développements. Effectivement spip-user est plus adapté

    Reply to this message

  • 1
    Michaël

    Bonjour,

    Comment utiliser la version simplifiée (une liste) du formulaire d’abonnement?

    #FORMULAIRE_ABOMAILMAN_MINI_UNE_LISTE n’affiche rien… Comment insérer ce formaulaire dans mes squelettes?

    Merci

    • Hello

      Il faut fournir l’id de la liste à la balise : #FORMULAIRE_ABOMAILMAN_MINI_UNE_LISTE{1} par exemple

      Je viens de faire une modif pour qu’un message d’erreur s’affiche si l’id de la liste n’est pas fourni

    Reply to this message

  • 4

    bonjour

    j’utilise la version spip 3, tout s’installe comme il le faut, seulement, l’affichage de la liste pour inscription dans la partie public avec #FORMULAIRE_ABOMAILMAN ignore le css, meme si spip-bonux 3 est activé, donc mon probleme c’est que le css dans la partie public, est ignoré?

    pouvez vous m’indiquer la cause de ce probleme.

    merci

    • Ce plugin ne fournit pas de feuille de style... Donc tes problèmes viennent d’ailleurs... As tu une url d’exemple ?

    • merci pour votre reponse, je devellope un site en local, le formulaire d’abonnement est affiché dans la page d’accueil du site, est ce que le style utilisé dans l’exemple donné en haut, est a titre exemple ou il faut que le formulaire s’affiche comme dans l’exemple en haut.

    • Oui, c’est un exemple... A toi de créer tes css

    • Merci de votre aide

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom