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). Il faut donc ajouter un define à votre fichier mes_options.php.

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

Discussion

42 discussions

  • Bonjour,
    SPIP 3.2.7, Abomailman 1.1.13
    Une seule liste.
    J’ai un problème dès le début, #FORMULAIRE_ABOMAILMAN n’est pas interprété (installé en copié-collé).
    Je ne vois pas du tout où j’ai pu oublier quelque chose.
    Une idée ?
    Merci beaucoup.

    Répondre à ce message

  • 1

    Bonjour

    j’ai le plaisir d’informer, si ça na pas déjà été fait ailleurs, que ce plugin fonctionne parfaitement avec mlmmj :)

    Il suffit de configurer les adresses d’abonnement et de désabonnement (en genéral maliste+subscribe@domain.tld et maliste+unsubscribe@admin.tld)

    Répondre à ce message

  • jacques83300

    Bonjour,

    Je souhaiterais utiliser ce plugin avec des listes Sympa installées chez mon hébergeur.
    Le seul souci est que celui-ci impose que les commandes soient envoyées d’une adresse unique (postmaster). Est-il possible de spécifier cette adresse à utiliser comme expéditeur des inscriptions de diffusion ?
    Merci d’avance pour votre réponse.
    Jacques

    Répondre à ce message

  • salut à tou-te-s

    J’ai un petit soucis lors de l’envoie manuel sur des listes mailman :
    L’objet du mail diffusé commence par = ?utf-8 ?Q ? (ou = ?iso-8859-1 ?Q ? suivant le reglage du facteur), ainsi que d’autres caractères de ce type en remplacement des espaces, accents et autres.

    Lors de l’envoie automatique, il n’y a pas de problème ; Et il ne me semble pas que les listes sympa soient touchées (de mémoire).

    Auriez-vous une piste pour régler le probleme ?

    Merci d’avance !

    ps : je suis sous spip 3

    Répondre à ce message

  • 1

    Bonjour,

    Tout d’abord, merci pour ce plugin très fonctionnel !

    Une question/suggestion, serait-il possible de pouvoir choisir la ou les listes lors d’un envoie manuel sans avoir à désactiver certaines listes ?

    Merci d’avance !

    • oups, désolé
      c’est effectivement possible :)

      suffit de cliquer sur le lien « Envoyer un e-mail aux lettres à partir du contenu de ce site », et ce choix est donné...
      (l’intitulé m’avait induit en erreur)

      encore merci pour ce plugin !

    Répondre à ce message

  • 7

    Petit souci pour une liste SYMPA.

    Le plugin et le formulaire fonctionnent avec la première ligne (nom_de_la_liste@domaine.fr), la seconde (?subject=subscribe nom_de_la_liste) et la quatrième (adresse mail pour s’incrire aux listes sur le domaine sympa@domaine.fr). Les abonnements sont bien enregistrés et les envois automatiques fonctionnent.

    Mais dès que j’indique une adresse de désabonnement (?subject=unsubscribe nom_de_la_liste ou ?subject=signoff nom_de_la_liste), abonnement ou désabonnement deviennent impossibles (avec message disant que l’adresse d’abonnement, ou de désabonnement, est invalide).

    Si quelqu’un sait d’où cela vient...

    • Je confirme les dires de billiejoe avec sympa. Mêmes symptômes. Tout pareil. J’utilise la dernière version d’abomailman, soit la 1.1.6.

      Pour le message d’erreur, j’ai :

      Invalid address: ?subject=subscribe test
      Warning: Cannot modify header information - headers already sent by (output started at /var/[…]/www/public/plugins/facteur/phpmailer-php5/class.phpmailer.php:464) in /var/[…]/www/public/ecrire/inc/actions.php on line 89
      
          Erreur : à cause d'un problème technique, l'email ne peut pas être envoyé.

      Oilà, oilà.

    • Jacques B

      Pareil chez moi. Contourné le problème en utilisant la balise restreinte #FORMULAIRE_ABOMAILMAN_MINI_UNE_LISTE1 qui ne propose que l’abonnement

    • Pour info, pas besoin de remplir « Abonnement » pour Sympa, si « L’adresse e-mail de l’administrateur Sympa » est mise, il sait que c’est une liste sympa et génère la commande tout seul.

      Pour le désabonnement dont je ne me suis jamais soucié, il faudrait modifier le code pour qu’il fonctionne de la même manière.

      Cette commande est générique chez sympa normalement.

    • Pour info c’est comme ça que je l’utilise ici :

      https://www.mediaspip.net/spip.php?page=newsletters

      Sans rien dans les deux champs d’abonnement / désabonnement

    • Jacques B

      Ouiiiiii ! Ça fonctionne dans les deux sens, sans rien ajouter. C’est juste un ajout à mettre dans la doc. MERCI !

    • Et revoir peut être un chouilla l’interface.

    • Jacques B

      Oui... Préciser de laisser vide pour Sympa. J’ai perdu des heures là-dessus. Aussi, le champ administrateur, c’est pas clair. C’est bien l’adresse du robot, pas celle du proprio de la liste.

    Répondre à ce message

  • 2

    En php 5.4.6 et si on n’est pas connecté un warning s’affiche :

    Warning : Illegal string offset ’email’ in /homez.57/lmpeutps/www/plugins/auto/abomailmans/v1.1.2/formulaires/abomailman.php on line 16

    et pareil en ligne 17 avec « nom ».

    Sur IRC la soluce, remplacer les lignes 16 et 17

    $valeurs['email'] = _request('email') ? _request('email') : $visiteur_session['email'];
    [19:50]	Jack31_	$valeurs['nom'] = _request('nom') ? _request('nom') : $visiteur_session['nom'];

    par

    	$valeurs['email'] = _request('email') ? _request('email') : (isset( $GLOBALS['visiteur_session']['email']) ? $GLOBALS['visiteur_session']['email'] : ”);
    	$valeurs['nom'] = _request('nom') ? _request('nom') : (isset( $GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : ”);

    Et le warning disparait :)

    Répondre à ce message

  • 3

    Erreur : à cause d’un problème technique, l’email ne peut pas être envoyé.

    Un peu comme Librux le mentionnait : http://www.spip-contrib.net/Abomailmans-pour-s-abonner-a-des-listes-de-diffusion#forum434303 le plugin donne cette erreur dès qu’on veut s’abonner ou bien se désabonner...

    Spip à jour, plugins à jour, plugin facteur installé, logs qui indiquent qu’il y a eu un message d’envoyé...

    La liste est une liste mailman, gérée par Netaktiv !

    • Diagnostique : adresse invalide pour Facteur

      L’adresse e-mail de la liste pour la souscription est sous la forme :
      maliste@mondomaine.tld ?subject=subscribe

      Or Facteur considère cette écriture comme une adresse invalide et donc refuse d’envoyer l’avis d’inscription (ou de desinscription)...

      Je cherche la solution !

    • Hello

      Je confirme. En fait c’est la fonction filter_var utilisée dans phpMailer qui rejette l’adresse.

      Peux tu tenter l’inscription avec -join comme indiqué ici :
      http://www.list.org/mailman-member/node12.html

    • Le problème se pose avec sympa, car on est obligé de mettre le paramètre ?subject=subscribe nom-de-la-liste

      comment faire ?

    Répondre à ce message

  • Bonjour,

    Dans quel fichier ? et comment faire pour que le plugin ne soit accessible et utilisé que par les seuls webmestres.

    j’ai essayé dans abomailmans_pipelines, mais rien ou pas propre ...Un gros message « accès interdit » et les boutons du plugin toujours visibles.

    par avance merci.

    Répondre à ce message

  • 1

    Bonjour.

    Je proposerais bien l’ajout de certains champs dan la table abomailmans :
    -  un booléen indiquant si la liste est privée ou non ;
    -  lien vers les archives de la liste.

    Dans le formulaire d’abonnement, j’ajouterai bien également un champ indiquant les motivations, un petit message, qui serait envoyer au propriétaire de la liste en même temps que la demande d’abonnement ou de désabonnement.

    Je demande donc si c’est suffisamment intéressant d’un point de vue collectif pour l’intégrer dans le plugin ou bien, je me fais ça dans mon coin, dans un plugin de surcharge ???

    A plus.

    Ludo

    • Bonjour,

      un booléen indiquant si la liste est privée ou non ;

      Si c’est pour permettre l’existance d’une liste fonctionnelle, mais pas accesible via le formulaire d’inscription/désinscription public, c’est oui, car cette possibilité existait pour la première version du plugin et c’est très utile pour avoir une liste de test, etc ....en partie privée du site .
      Elle n’a pas besoin d’être accessible au public.

      - lien vers les archives de la liste.

      Oui si c’est optionnel, mais à priori c’est le cas . Un lien systématique risque
      de renvoyer à des archives fermées, ce qui est toujours perturbant techniquement pour les lecteurs...

      Dans le formulaire d’abonnement, j’ajouterai bien également un champ indiquant les motivations, un petit message, qui serait envoyer au propriétaire de la liste en même temps que la demande d’abonnement ou de désabonnement.

      Oui très intéressant également, si celà reste optionnel car il faut pouvoir le faire exister dans le cas ou le formulaire d’inscription sert pour plusieurs listes, par exemple 15 listes ... Sauf si celà est déjà dans le projet de plugin ..

      par avance , Merci

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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