CleverMail

CleverMail est un plugin permettant d’envoyer des lettres d’informations à des abonnés depuis SPIP. Issu au départ d’un développement libre complètement indépendant de SPIP, il a connu une première version pour SPIP 1.9 avant d’être complètement réécris pour SPIP 2.0.

Fonctionnalités

  • Gestion de multiples lettres, avec possibilité de les rassembler par catégories
  • Gestion des inscriptions en ligne et désinscriptions, les abonnés étant distincts des utilisateurs de SPIP
  • Possibilité de restreindre la liste des lettres proposées dans le formulaire d’abonnement
  • Abonnement au choix de l’utilisateur en version texte brut ou multipart simultané HTML + texte brut [1]
  • Possibilité de forcer la version dans le formulaire d’abonnement
  • Récupération des contenus HTML et texte brut à partir de deux squelettes ou deux URL, donc utilisation de squelettes SPIP dédiés voire même de contenus externes au site
  • Automatisation des envois avec une fréquence quotidienne, hebdomadaire (multiples jours de la semaine possibles) ou mensuelle
  • Automatisation des inscriptions depuis un fichier distant

Mise en place du plugin

Télécharger le paquet ci-joint et placer son contenu dans votre dossier plugins/.

Avant d’activer CleverMail dans l’interface de gestion des plugins, vous devrez installer les plugins Facteur et SPIP Bonux.

Présentation de l’interface dans l’espace privé

Une fois le plugin activé, le sous menu CleverMail est crée dans le menu Edition.

Le menu de CleverMail permet de :

  • Lister les lettres existantes
  • Créer une nouvelle lettre
  • Lister les abonnés
  • Ajouter des abonnés
  • Paramétrer le plugin

Tableau de bord

Le tableau de bord général de CleverMail affiche la liste des newsletters et leurs caractéristiques principales :

Différentes actions sont disponibles

  • Modifier : Permet de modifier une lettre
  • Supprimer : Une lettre peut être supprimer seulement si aucun abonné n’y est inscrit.
  • Nouveau Message

Création / Modification d’un lettre d’information

Une lettre se compose de la façon suivante :

  • Nom : Le nom de la lettre est important car c’est par leurs noms que les lettres sont triées et classées par catégorie. "01. Ma Catégorie/02. Ma Lettre"
"01. " Ordre de la catégorie (peut commencer à 00. )
"Ma Catégorie" Nom de la catégorie (= Nom du type de publication)
"/" séparateur sans espace entre le nom de la catégorie et le nom de la lettre
"02. " Numéro d’ordre de la lettre (peut commencer à 00. )
"Ma Lettre" Nom de la lettre
  • Description : Explication back office de la lettre, par défaut ce champ n’apparait pas en front office .
  • Modération :
    • Ouverte : tout le monde peut s’inscrire sans confirmation
    • E-mail : tout le monde peut s’inscrire après confirmation par e-mail
    • Fermée : personne ne peut s’inscrire, utile pour tester avant ouverture, ou fermer temporairement
  • E-mail du modérateur : (Champ obligatoire) Le modérateur reçoit un mail dès qu’un utilisateur confirme sont inscription à une lettre. Plusieurs adresses peuvent être saisies en les séparant par des virgules.
  • Préfixe : Préfixe les sujets des messages avec le nom de la lettre d’information (ex : [Rapport annuel] Confirmation de votre inscription). Pour le formulaire multiple, en cas d’inscription à plusieurs lettres en même temps, ce champ n’est pas pris en compte.
  • Sujet et description d’une inscription : Message d’inscription qui sera envoyé par mail à l’utilisateur en cas de modération par E-mail. En cas d’abonnement multiple le message envoyé pour toutes les lettres est celui paramétré dans la section « paramétrage »
  • Sujet et description d’une désinscription : Message de désinscription qui sera envoyé par mail à l’utilisateur.
  • Version HTML : Nom du squelette [2] ou URL de la page permettant d’obtenir le contenu de la lettre en version HTML.
  • Version texte brut : Nom du squelette [3] ou URL de la page permettant d’obtenir le contenu de la lettre en version texte brut.
  • Automatisation des envois : Les envois des lettres d’information peuvent être fait manuellement ou être automatisés
    • Envois quotidiens : Les dernières publications [4] seront envoyées tous les jours à partir de l’heure précisée dans le champ "Heure de création du message". Les publications publiées après cette heure seront envoyées le lendemain.
    • Envois hebdomadaires : Les dernières publications seront envoyées toutes les semaines le jour et à l’heure précisés dans les champs "Jour(s) de la semaine" et "Heure de création du message".
    • Envois mensuels : Les dernières publications seront envoyées tous les mois au jour et à l’heure précisés dans les champs "Jour du mois" et "Heure de création du message".
  • Mode d’abonnement : mode d’abonnement à la liste par défaut si aucun mode d’abonnement n’est précisé ou forcé à l’inscription.

Tableau de bord des abonnés

Le tableau de bord des abonnés affiche la liste des abonnés aux newsletters. Il y a une ligne par couple abonné/newletter.

La liste des abonnés peut être filtrée sur une partie de l’adresse e-mail (@example.com par exemple) et/ou sur le nom de la newsletter.

L’administrateur a la possibilité de modifier le mode d’inscription d’un abonné ou de le désinscrire d’une lettre. Dans ce cas l’abonné ne recevra pas de mail de désinscription.

Un lien « Vider les abonnements en attente depuis plus d’un mois » permet de supprimer de la base de données les demandes d’inscriptions en attente de validation depuis plus d’un mois.

Cette fonction nettoie également les adresses de type @example.com qui seraient par erreur [5] restées dans la table des abonnés aux newsletters.

Ajout d’abonnés

Des abonnés peuvent être ajoutés dans l’interface privé à partir d’un fichier CSV ou directement en saisissant les adresses e-mail dans le formulaire.

Dans le fichier ou dans la zone de saisie, mettre une adresse e-mail par ligne, ou séparer les adresses par des virgules ou points virgules.

Paramétrage

La section paramétrage contient les paramètres communs à toutes les lettres.

Les paramètres génériques sont les suivants :

  • E-mail administrateur : par défaut mail du webmestre de SPIP
  • E-mail expéditeur (from et reply-to) : par défaut mail du webmaster de SPIP
  • E-mail return path : par défaut mail du webmaster de SPIP
  • Nombre de messages par envoi : par défaut « 50 ». A chaque traitement de la tache planifiée 50 messages seront envoyés.
  • Sujet et description d’une inscription multiple : Message d’inscription qui sera envoyé par mail à l’utilisateur en cas d’inscription a plusieurs lettres en même temps.

Mécanisme de création et envoi des messages

Envoi automatique

Les messages automatiques sont envoyés via une tache planifiée. Chaque jour, la tache planifiée regarde s’il y a eu de nouvelles publications depuis le dernier envoi et si la date du prochain envoi est atteinte.

Exemple d’une lettre envoyée tous les 15 du mois :

  • Janvier : Nouvelle publication le 10 => 15 du mois => envoi
  • Février : pas de nouvelle publication => 15 du mois => pas d’envoi => nouvelle publication le 17 => envoi => nouvelle publication le 20 => pas d’envoi
  • Mars : pas de nouvelle publication => 15 du mois => envoi de la publication du 20 février

Envoi manuel

Les messages peuvent également être envoyés manuellement depuis le tableau de bord des lettres d’information.

Pour créer un nouveau message, cliquer sur le lien "nouveau message" d’une lettre.

Le lien « 1 message » permet d’accéder au tableau de bord des messages d’une lettre.

Ce tableau de bord permet de voir les messages par état : nouveau message, message en cours d’envoi et message envoyé.

Différentes actions sont disponibles sur les messages (selon leur état) :

  • Aperçu HTML : Visualisation de la lettre au format HTML, avant remplacement des balises de personnalisation
  • Aperçu texte : Visualisation de la lettre au format texte, avant remplacement des balises de personnalisation
  • Modifier : Modification du message qui sera envoyé
  • Supprimer : Suppression du message
  • Envoyer : Envoi du message, le message est déposé dans une file d’attente que le Facteur va dépiler au fur et à mesure de l’exécution du génie de SPIP. Le message en attente n’est plus modifiable ni supprimable.

Intégration au site public

La balise #FORMULAIRE_CLEVERMAIL permet d’afficher le formulaire par défaut des listes non filtrées par catégorie.

Il est possible de restreindre le formulaire d’abonnement à une newsletter en précisant l’id de la lettre :
#FORMULAIRE_CLEVERMAIL{1}

Il est aussi possible de restreindre le formulaire d’abonnement à un unique mode en précisant texte ou html :
#FORMULAIRE_CLEVERMAIL{0,html}

Il est enfin possible d’utiliser un formulaire avec des cases à cocher plutôt qu’une liste en passant box en troisième paramètre [6] :
#FORMULAIRE_CLEVERMAIL{0,html,box}

La balise #FORMULAIRE_CLEVERMAIL_MULTIPLE permet d’afficher le formulaire d’abonnement multiple filtrées par catégorie.

Support

En cas de bug ou problème particulier, merci de vérifier sur le Trac de la zone si un ticket existe déjà, et si nécessaire de créer un nouveau ticket avec le « component » "plugins/clevermail" et faire un commentaire ici-même pour signaler ce ticket.

Si vous avez des idées pour améliorer le plugin, même chemin, créez un nouveau ticket avec le « component » "plugins/clevermail" !

Si vous aimez ce plugin, et l’utilisez sur un site public, n’hésitez pas à le signaler sur sa fiche !

Notes

[1Attention, Lotus Notes n’aime pas...

[2CleverMail en propose un par défaut

[3CleverMail en propose aussi un par défaut

[4C’est à dire depuis l’envoi précédant.

[5Un bug depuis corrigé pouvait conduire à cette erreur

[6Le code impose pour l’instant de préciser les deux premiers paramètres, ce sera amélioré ultérieurement...

Discussion

195 discussions

  • 6

    Bonsoir,

    J’ai installé le plugin Clevermail en local. Après configuration avec relai SMTP dans Facteur, tout fonctionne correctement. Quand j’installe le plugin avec la même configuration sur OVH mutualisé, rien. Que ce soit en utilisant « nouveau message » ou en exécutant les tâches dans la liste des travaux la lettre d’information ne se créé pas. Rien dans la base de données. Aucune trace dans les logs. J’ai juste dans l’URL « err_lst=1&err_msg=erreur_contenu_vide#lst1 » suite à l’utilisation du bouton « nouveau message ». Si quelqu’un a une idée. Merci.

    Arnaud.

    • Je me réponds à moi-même. Ça peut toujours aider quelqu’un.

      Le problème se produit lorsque le plugin est installé en https. Dans ce cas, le fichier inc/clevermail_post_create.php est incapable de créer la lettre car la référence est faite en dur à ’http’. Pour régler le souci, il convient de faire un test et d’utiliser une variable. Code ci-dessous en ligne 10.

       // Test pour determiner si le plugin fonctionne en http ou https   
      if( isset($_SERVER['HTTPS'] ) ) {
          $http_value = 'https://';
      } else {
          $http_value = 'http://';
      }

      Puis dans les deux tests qui suivent, il faut remplacer 'http://' par $http_value en ligne 11 et 34.

      Je pense que ça serait intéressant de modifier le plugin en conséquence mais je n’ai pas accès à la trac zone pour poser un commit.

      Arnaud.

    • Bonjour Arnaud
      je sais que ton mail n’est pas très récent mais je viens d’installer clevermail et au moment de cliquer sur nouveau message j’ai le même genre de réponse que toi. J’ai bien fait la manipulation que tu préconise mais c’est sans succès est-ce que tu as eu depuis d’autres dysfonctionnement du même ordre et les as-tu résolu ?

      Merci par avance.
      Philippe

          // Test pour determiner si le plugin fonctionne en http ou https
           if( isset($_SERVER['HTTPS'] ) ) {
               $http_value = 'https://';
           } else {
               $http_value = 'http://';
           }
      
      
        	// Traitement de la source HTML
      	  if ( strpos($list['lst_url_html'], '$http_value') !== false ) {
      		  include_spip('inc/distant');
      		  $url_html =  $list['lst_url_html'].(strpos($list['lst_url_html'], '?') !== false ? '&' : '?').'date='.date("Y-m-d",$last_create).'&lst_id='.intval($lst_id);
      		  $post['pst_html'] = recuperer_page($url_html);
      	  } else {
      		  $contexte = array(
      				'date' => date("Y-m-d",$last_create),
      				'lst_id' => intval($lst_id),
      			);
      		  if (!_CLEVERMAIL_AGE_PLACE_SUR_DERNIER_ENVOI) {
      			unset($contexte['date']);
      		  }
      		  // on passe la globale lien_implicite_cible_public en true
      		  // pour avoir les liens internes en public (en non prive d'apres le contexte)
      		  // credit de l'astuce: denisb & rastapopoulos & erational
      		  $GLOBALS['lien_implicite_cible_public'] = true;
      		  $post['pst_html'] = recuperer_fond($list['lst_url_html'], $contexte);
      		  // on revient a la config initiale
      		  unset($GLOBALS['lien_implicite_cible_public']);
      	  }
      
      	  // Traitement de la source texte
      	  if ($list['lst_url_text'] != '') {
        	  if ( strpos($list['lst_url_text'], '$http_value') !== false ) {
    • Arnaud

      Bonjour,

      Oui, ça fonctionne bien. Il y a juste une petite erreur dans ton code. Pour la ligne de traitement de la source HTML, le $http_value ne doit pas être entre guillemets car il s’agit d’une variable PHP. Ça donne ceci :

      if ( strpos($list['lst_url_html'], $http_value) !== false ) {

      A l’époque, j’avais envoyé un petit mail aux développeurs du plugin pour qu’ils intègrent la modification durablement mais je n’ai pas eu de réponse.

      Arnaud.

    • Nickel.
      Merci Arnaud

    • Bonjour Arnaud, qui appelles-tu les « développeurs du plugin » ?

      Personnellement, je suis son créateur, mais plus du tout son mainteneur, ne faisant plus de SPIP depuis longtemps.

      Par contre, le plugin est sur la zone, donc tu peux à priori contribuer directement ton correctif :
      https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/clevermail?order=name

    Répondre à ce message

  • Bonjour,
    Sur un spip 4.0.6 et une installation neuve du plugin j’ai :
    Fichier clevermail_lists introuvable
    et je ne peux pas démarrer.
    Les deux plugins Facteur et spip-bonux sont en place et à jour.
    que faire pour contourner ce blocage Merci bien.
    Alain BOURDEAU

    Répondre à ce message

  • Didier Kala

    Bonjour,

    Pas certain que ce soit le meilleur endroit pour publier ce message, mais je ne réussis pas à ouvrir de ticket sur le git spip.
    Il me semble, mais me plante peut-être, qu’il y a un trou dans la raquette au niveau des demandes de désabonnement.

    Lors d’une demande, dans clevermail_unsubscribe.php on crée un actionid l. 13 puis on vérifie ll. 14 à 16 qu’aucune demande pour l’abonnée/liste n’existe déjà dans spip_cm_pending. Si c’est le cas, on crée une entrée avec pnd_action_id = actionid :

    		  $actionId = md5('unsubscribe#'.intval($abonnement['lst_id']).'#'.intval($abonnement['sub_id']).'#'.time());
    		  if (sql_countsel("spip_cm_pending", "lst_id = ".intval($abonnement['lst_id'])." AND sub_id = ".intval($abonnement['sub_id'])) == 0) {
    			sql_insertq("spip_cm_pending", array('lst_id' => intval($abonnement['lst_id']), 'sub_id' => $abonnement['sub_id'], 'pnd_action' => 'unsubscribe', 'pnd_action_date' => time(), 'pnd_action_id' => $actionId));
    		  }

    On envoie ensuite un e-mail de confirmation de désinscription avec actionid en variable.
    Lorsque l’abonnée clique sur le lien de confirmation, on retombe sur clevermail_validation.php, qui ll. 9-82 va vérifier qu’une entrée existe bien pour pnd_action_id=actionid dans spip_cm_pending. Sinon, on signifie à l’abonnée que l’action a déjà été prise en compte :

    		if (sql_countsel("spip_cm_pending", "pnd_action_id=".sql_quote($_GET['id'])) >= 1) {
                       // Abonnement ou désabonnement puis suppression de l'entrée dans spip_cm_pending
    		} else {
    	          $return = $return.'<p>'._T('clevermail:deja_validee').'</p>';
    		}

    Est-ce que ça n’exclut pas automatiquement les personnes qui ont fait une première demande de désabonnement mais ne l’ont pas confirmée ? Il faudrait dans ce cas rajouter dans le test de clevermail_unsubscribe.php un else if() qui procède à un update avec le nouvel actionid, non ?

    Note : il est tout à fait possible que je n’aie rien compris.
    Et merci beaucoup pour ce plugin.

    Répondre à ce message

  • Véronique R.

    Bonjour, j’ai un souci avec la balise #FORMULAIRE_CLEVERMAIL
    En intégrant cette balise dans un article, elle n’affiche pas le formulaire d’abonnement à la newsletter.
    Je suis allée voir les fichiers php présents dans mon site, dans la section « plugins » puis « auto » puis « cleavermail » puis « balise » il s’avère que le fichier « clevermail_unsubscribe.php » est présent ainsi que le fichier « clevermail_validation.php », mais aucun fichier php sur ce formulaire.

    Est ce que quelqu’un pourrait m’aider ?
    Spip 3.2

    Merci

    Répondre à ce message

  • j ’utilise clevermail qui fonctionne parfaitement pour un premier envoi mais ne renouvelle pas le second jour automatiquement
    merci pour une aide

    Répondre à ce message

  • 1
    Arnaud DUPUY

    Bonjour, depuis quelque temps, j’ai un robot qui envoi des demandes d’inscription toutes les 5 min, je suis noyé de mail, puisque je reçois une copie de ce que envoi le plugin !
    Y a t’il un moyen de contrer les robot qui inscrivent des mails dans le formulaire d’inscription ?
    D’avance merci pour votre réponse ...
    Cordialement
    Arnaud

    Répondre à ce message

  • Bonjour,

    D’un côté, j’ai des articles qui sont des fiches descriptives avec les coordonnées d’associations et contenant un champ extra #COURRIEL pour récupérer les courriels de chaque asso.

    De l’autre j’ai un formulaire créé avec Formidable.

    J’aimerais envoyer les résultats du formulaire par courriel à certaines des assos, mais pas à toutes.

    Je voudrai que la liste des destinataires se construise à partir d’une case cochée ou non sur l’article de l’asso en partie privée de spip privée ou par l’adjonction d’un mot-clé spécifique.

    Une idée ?

    Merci d’avance,

    Hervé

    Répondre à ce message

  • 1
    obiwanriko

    Bonjour
    Je suis très content de clevermail que j’utilise depuis plus de 6 ans pour créer/gérer/envoyer des newsletters.
    Tout allait bien mais depuis aujourd’hui J’ai un « bug » qui vient d’aparaître lors de la génération de la newsletter : les URL des liens de la newsletter contiennent toutes le « répertoire » /ecrire/
    J’ai tout essayer comme passer de URL_ARTICLE à (#URL_ARTICLE et vice-cersa + J’ai vidé le cache, le plugin facteur et le plugin clevermail est à jour.
    Ma config :
    Linux bb0131 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1
    PHP Version 5.4.45-0+deb7u5
    SMTP localhost

    Merci d’avance de votre aide

    • obiwanriko

      Problème résolu : cela vient du « filtre » #URL_ARTICLE dans les images.
      Les enlever a résolu le soucis.

    Répondre à ce message

  • Bonjour,
    Clevermail est-il totalement autonome par rapport à Mailsubscribers et Mailshot ? Quelles sont les interférences possibles ?

    Répondre à ce message

  • 2

    bonjour
    Je regarde ce plugin car spip-liste que j’utilisais jusqu’a maintenant n’est plus compatible SPIP 3.1.

    est il possible pour « fabriquer » la lettre ; d’aller chercher un squelette particulier ?
    Dans spip liste j’avais construit un squelette qui piochait les derniers articles dans plusieurs rubriques, c’etait parfait, je ne vois pas comment faire avec ce plugin ?

    merci de vos conseils.

    jacques

    • Il suffit de renseigner la partie « URL des tempêtes générés » quand tu créé une lettre d’information.
      Tu y met l’URL de ta page.

    • Jean-Philippe

      Je suppose qu’il s’agit de « templates » et non de « tempêtes »... ;-)

    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