Envoyer une newsletter Spip avec WANewsletter


Adaptation de WAnewsletter permettant l’envoi manuel de pages générées par Spip.

Principe général

Les modifications au script WAnewsletter proposées ici ajoutent un bouton « Charger à partir du site » dans le formulaire de création de Newsletter. (« Envoi » dans le menu de WAnewsletter). Ce bouton charge le contenu des versions HTML et texte de la newsletter à partir de leurs pages respectives dans le site.

Ce système gère donc une liste d’abonnés totalement indépendante des auteurs inscrits sur votre site.

Tel que présenté ici, le système ne permet de définir qu’une seule newsletter (en deux formats) qui pourra être générée par Spip. Les webmestres débrouillards pourraient, par exemple, développer des systèmes plus complexes incluant un menu déroulant contenant des appels à des pages différentes.

C’est quoi WAnewsletter ?

WAnewsletter est un excellent script de gestion de listes d’abonnés et d’envoi de newsletter. Il est gratuit (licence GPL) et très poussé. Il contient même des fichiers de traductions faciles à modifier, rappelant ceux de Spip, incluant une interface française.

Par contre, WANewsletter s’adresse principalement aux sites de petite et moyenne envergure car il n’est pas adapté aux listes contenant plusieurs centaines d’abonnés.

Site officiel de WAnewsletter :
http://www.phpcodeur.net/wascripts/wanewsletter/

Installation et support de WAnewsletter

Vous pouvez télécharger le script ici.

Pour l’installation de base du script, suivez les instructions dans le fichier /docs/readme_fr.html fourni avec les fichiers WAnewsletter.

Quelques truc importants :

  • Le formulaire par défaut est le formulaire « subscribe.php ».
  • Pour créer un formulaire personnalisé, utilisez le créateur de formulaire de la section « outils » disponible dans la zone d’administration de votre script.

Vous pouvez utiliser la FAQ ou le forum de WAnewsletter si vous avez des questions sur l’installation du script ou sur son utilisation qui vont au-delà delà des modifications suggérées ici.

Modifications de WAnewsletter

Pour adapter WAnewsletter afin que ce script utilise des squelettes Spip, vous devez suivre les instructions ci-dessous en ajoutant ou remplaçant les morceaux de codes fournis dans les fichiers indiqués. (NOTE : Les modifications suivantes ont été faites à partir de la version 2.2.5 du script WAnewsletter.)

Fichier : templates/admin/send_body.tpl

AVANT LA LIGNE :

<!-- BEGIN formulaire -->

AJOUTER :

<!-- HACK SPIP - Load newsletter from website -->
<div align="center">
<input type="button" name="Button" value="Charger &agrave; partir du site" onclick="document.location='envoi.php?mode=spip'" />	
<div class="explain"><font size="2">Aller directement &agrave; la version <a href="/newsletter-html.php3" target="_blank">HTML</a> ou <a href="/newsletter-txt.php3" target="_blank">Texte</a> sur
le site.</font></div></div>
<!-- Fin HACK SPIP -->

Ceci ajoute le bouton « Charger à partir du site » et des liens directs vers les pages contenants les différentes versions de la newsletter.

Vous pouvez remplacer a href="/newsletter-html.php3" et a href="/newsletter-txt.php3" par l’adresse de vos pages contenants les versions HTML et texte de votre newsletter si elles sont différentes des squelettes fournis avec cet article. N’oubliez pas qu’une adresse commençant par « / » ramène à la racine du site !

Fichier : admin/envoi.php

APRÈS LES LIGNES :

$logdata = array();
$logdata['log_id']        = ( !empty($_REQUEST['id']) ) ? intval($_REQUEST['id']) : 0;
$logdata['log_subject']   = ( !empty($_POST['subject']) ) ? trim($_POST['subject']) : '';
$logdata['log_body_text'] = ( !empty($_POST['body_text']) ) ? trim($_POST['body_text']) : '';
$logdata['log_body_html'] = ( !empty($_POST['body_html']) ) ? trim($_POST['body_html']) : '';
$logdata['log_status']    = ( !empty($_POST['log_status']) ) ? STATUS_HANDLE : STATUS_WRITING;

AJOUTER :

//HACK SPIP
$mode = ( !empty($_REQUEST['mode']) ) ? $_REQUEST['mode'] : '';
if ($mode == "spip") {
$logdata['log_subject']   = $logdata['log_subject']   = $listdata['liste_name'];
$logdata['log_body_text'] = html_entity_decode(file_get_contents("http://www.votre_site.com/newsletter-txt.php3") ) ;
$logdata['log_body_html'] = file_get_contents("http://www.votre_site.com/newsletter-html.php3");
}
//Fin HACK SPIP

Ces lignes insèrent le code source des pages Spip contenant les différentes version de la newsletter lorsque « ?mode=spip » est inclus à la fin du URL de la page d’envoi. (C’est ce que fait le bouton « Charger à partir du site ».)

IMPORTANT : Vous devez remplacez « www.votre_site.com » par l’adresse de votre site. Vous devez aussi remplacer « newsletter-txt.php3 » et que « newsletter-html.php3 » par les pages contenant les newsletters en format texte ou HTML si vous n’utilisez pas les squelettes du même nom fournis dans cet article.

Squelettes de la newsletter

Je fournis ici deux squelettes qui affichent les articles et les sites parus durant les 15 derniers jours. Les articles sont classés par rubriques selon un ordre pas très clair. :P

Squelettes de base de la newsletter v.07
6 juillet 2005

Vous devez placer les fichiers newsletter-txt.php3 et newsletter-html.php3 dans la racine de votre site et à placer newsletter-txt.html et newsletter-txt.html là où se trouvent les autres squelettes de votre site (typiquement à la racine aussi).

IMPORTANT :

  • Si vous désirez voir la version texte de votre newsletter par votre navigateur, c’est bien la source de la page qu’il faut regarder, sinon les retours de ligne « texte » ne seront pas pris en charge.
  • [SPIP 1.7] Si lorsque vous regardez la source de la version texte de votre newsletter vous vous appercevez que les appostrophes ne sonr pas interprétées de la bonne façon, vous devrez alors installer le filtre apostrophe dans votre fichier mes_fonctions.php3.
  • Si vous créez vos propres squelettes, il est absolument nécessaire que vous y ajoutiez le code
    {LINKS}

    là où vous voulez que le lien de désabonnement apparaisse. WAnewsletter bloque l’envoi de toute newsletter qui ne contient pas ce code.

Suggestions

  • Libre à vous de créer vos propres squelettes de newsletter (je vous le recommande). En général, on y met un lien et un résumé des articles parus durant les derniers 7, 15 ou 30 jours, selon la fréquence de vos envois.
  • Vous pouvez aussi, en théorie, utiliser n’importe quelle page web comme source de votre newsletter, comme le fichier sommaire.php3 par exemple. Il est possible, par contre, que vous ayez des difficultés avec les pages qui utilisent le javascript et le css, car les logiciels de courriel ne sont pas toujours très sophistiqués.

Procédures d’envoi de la newsletter

1) Accéder à la zone d’administration de la newsletter (typiquement /newsletter/admin).

2) Choisir l’option « envoi » dans la barre de navigation du haut.

3) Bien s’assurer que la bonne liste d’abonnés a été choisie par le menu déroulant au bas complètement de la page.

Note : Pour tester l’envoi de la newsletter, vous pouvez créer une autre liste d’envoi qui ne contiendrait que les adresses des administrateurs du site.

4) Cliquez sur le bouton « Charger à partir du site ».
Ce bouton remplira les champs « Newsletter au format texte » et « Newsletter au format HTML » avec les codes sources des pages de la newsletter Spip.

5) Vous pouvez avoir une idée de ce que chacune des versions de la newsletter aura l’air en cliquant sur les boutons « prévisualiser ».

6) Si vous êtes satisfait par les newsletters, cliquez sur le bouton « Envoyer » en bas de page.

ATTENTION ! La newsletter n’a pas encore été envoyée ! N’oubliez pas de cliquer sur le lien « ici » dans le message qui apparaîtra pour confirmer l’envoi de la newsletter.

7) Et voilà ! Durant les minutes qui suivent, les messages seront envoyés à tous les abonnés de la liste que vous aviez sélectionnés.

ATTENTION ! Si vous aviez fait un test d’envoi en utilisant la liste de tests, n’oubliez pas de faire un autre envoi en utilisant la liste « Normale ».

Notes

  • Il n’est pas nécessaire de cliquer sur le bouton « Placer le lien de désinscription » car ces liens sont déjà inclus dans les newsletters produites par le site. (c’est la balise lien que vous remarquerez dans le texte de la newsletter. Celui-ci qui sera remplacée par un lien direct de désabonnement.
  • Rien ne vous empêche de modifier le contenu des newsletters à l’intérieur des champs avant de les envoyer. Soyez averti que cela peut provoquer des erreurs dans la version HTML si ce n’est pas fait avec délicatesse.
  • Assurez-vous que votre webmestre se tient au courant des mises à jour du script WANewsletter, particulièrement celles qui concernent des corrections de failles de sécurité. Le site officiel de WANNewsletter se trouve à :
    http://www.phpcodeur.net/wascripts/wanewsletter/
  • Dans l’éventualité d’une mise à jour du système, il faut absolument tenir compte des changements apportés au script afin de le rendre compatible avec SPIP tels que décrits dans cette contrib.

FAQ

Que faire pour qu’un article ne s’affiche pas dans la newsletter ?

Vous pouvez changer la date de publication pour qu’elle soit plus vieille que le nombre de jours spécifiés dans le squelette (15 jours par défaut) ou vous pouvez associer le mot-clef « invisible » à l’article en question.

Que faire pour qu’un article apparaisse dans la newsletter ?

Vous n’avez qu’à changer sa date de publication pour qu’elle soit à l’intérieur du nombre de jours spécifiés dans le squelette (15 jours par défaut).

Comment faire afficher le formulaire d’inscription et ses messages de confirmations dans d’autres langues ?

Comme suggéré dans la FAQ, pour spécifier la langue du formulaire, il vous suffit d’ajouter $language = 'francais'; dans le code d’inclusion de newsletter.php qui est fourni par le générateur de formulaire (avant include()) Ce seront les fichiers de traduction du dossier /language/ qui seront utilisés.

On peut aussi indiquer la langue dans le url qui mène au formulaire. Par exemple : http://votresite.com/newsletter/subscribe.php?language=english.

Discussion

34 discussions

  • 1

    Quand je lis :

    Par contre, WANewsletter s’adresse principalement aux sites de petite et moyenne envergure car il n’est pas adapté aux listes contenant plusieurs centaines d’abonnés

    Je suis un peu étonné car j’utilise actuellement et régulièrement ce script pour envoyer une newsletter à quelque 37.000 abonnés…

    • lorenzo

      je gere, de même, des listes contenant plusieurs milliers d’abonnés sans probleme...

    Répondre à ce message

  • Jérôme

    Salut à tous,

    J’ai un problème pour l’envoi des mails.
    Aucun email ne part.
    il me dit bien que l’envoi a était sauvegarder, donc je valide l’envoi maintenant et la il me marque :

    « L’envoi partiel a été effectué avec succès à 0 abonnés.
    La lettre de diffusion a été envoyée jusqu’à présent à 0 abonnés sur un total de 3

    Cliquez ici pour continuer l’envoi de façon automatique

    Cliquez ici pour envoyer un autre flot d’emails »

    Si je clique sur le premier lien, il me marque : Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas.

    et si je clique sur le second liens rien ne se passe

    Quelqu’un aurait une idée du problème.
    merci

    Répondre à ce message

  • 2
    Thierry Gagnon

    Je suis désolé d’avoir à vous annoncer que je ne pourrai plus supporter cette contrib. En effet, je n’utilise plus WAnewsletter depuis déjà un certain temps. Le travail nécessaire pour faire suite aux multiples évolutions de WANewsletter en conjoncture avec les nouvelles versions de Spip est maintenant au-delà de mes capacités.

    J’invite donc les braves à reprendre le flambeau et perpétuer cette chouette solution d’infolettre sur Spip en créant de nouvelles contribs portant sur les dernières versions de ces scripts.

    • Bonjour Thierry, :-)

      En fait, la partie concernant l’ajout de code pour gérer le chargement de contenu externe n’est plus utile dans wanewsletter 2.3.*. Le chargement d’un document à partir d’une URL donnée est une fonctionnalité native de cette version.

      En revanche, je suppose que les squelettes de base fournis dans ton article restent valables ?

      Cordialement,

    • Thierry Gagnon

      Voilà une très bonne nouvelle ! :)

      Peu-être que mes squelettes sont encore valides. Ce qui est certain, c’est qu’ils bénéficieraient d’une révision complète pour bénéficier des nouvelles fonctionnalités de Spip. Je ne vois pas quand j’aurai l’occasion dele faire par contre... :(

    Répondre à ce message

  • Bonjour,

    J’ai beau lire et relire, et je ne réussis pas l’installation, je reste bloqué à la page installation, les modifs apportées jouent-elles un rôle pour l’installation ?

    Merci

    Répondre à ce message

  • 2

    Bonjour,
    Sur le fond rien de changé.
    Les seules adaptations sont :
    Adapter l’adresse des fichiers newsletter-txt.html ou newsletter-html.html dans les deux fichiers de Wanewsletter, /admin/envoi.php et /templates/admin/send_body.tpl.
    Leurs adresses deviennent : http://votre_site_sous_spip/spip.php?page=newsletter-html et http://votre_site_sous_spip/spip.php?page=newsletter-txt

    Ces deux fichiers étant mis directement dans la directorie /squelettes du site sous spip.
    Les anciens fichiers en .php3 sont inutiles

    C’est tout et ça marche impec, pour la récupération

    • J’ai fait ce qui était suggéré, mais j’ai quelques soucis :

      http://www.portique.net/spip.php?page=newsletter-html

      D’une part, quand je charge, j’ai pour les brèves un lien sans numéro et faisant référence à un article.

      D’autre part, quand je me rends à la page citée ci-dessus, il y a apparemment des problèmes de syntaxe, mais comme je n’y connais pas grand chose, je ne sais pas ce qu’il faut faire pour rectifier le problème.

      Une idée ?

      Merci par avance.

    • Bonjour et merci pour cette belle contrib !

      J’ai quelques soucis en voulant utiliser un forumulaire d’inscription pour wanewsletter avec la version 1.9.1 de Spip.

      Avec le formulaire que j’ai généré avec l’outil de wanewsletter, lors du submit de l’inscription, j’arrive sur une page sur laquelle est écrite « Nothing to do here. » (d’après sa source, je crois qu’elle est générée par spip).

      Comment doit être mon formulaire pour qu’il fonctionne avec la version 1.9.1 de Spip ?

      Merci d’avance
      Frances

    Répondre à ce message

  • Bonjour,

    Merci pour ce script qui, si je parviens à le faire fonctionner, me fera gagner beaucoup de temps.

    Je viens de le tester avec la dernière version de Wanewsletter. L’accès direct aux pages html et texte est impec mais le chargement ne fonctionne pas.

    Avez-vous une idée ? Est-ce lié à la version 2.3 ? Je ne connais pas les précédentes.
    Merci par avance.

    Répondre à ce message

  • Merci beaucoup pour cette contrib. J’utilisais pour le moment Spip dans sa version la plus simpliste ! (Il faut dire que je me suis lancer tout de suite dans la réalisation de mes propres squelettes !

    Bref tout ça pour dire que j’ai installé avec succès Wanewsletter. Aucun problème pour la ise en place du Hack.

    Là où il me reste un petit souci avant d’être opé à 100%, c’est que je suis sous spip 1.9.1 avec une base et un site en utf-8. Lorsque je visualise la version HTML de ma newsletter dans mon navigateur, je n’ai aucun problème, elle est belle ! ! ! Par contre quand je la charge dans le formulaire d’envoi de Wanewsletter, j’ai un petit souci. Mes caractères accentués se transforment en d’immondes bêtes du genre « Lieu à définir » ce qui est un peu ennuyeux quand à la lisibilité du texte...

    Je me demandais si quelqu’un utilisant cette contrib aurait une idée de là où pouvait venir le problème !

    Répondre à ce message

  • 2

    Bonsoir,

    J’ai chargé la WAnewsletter. Je n’ai pas encore peu l’expérimenté. J’ai des difficulté pour faire le lien sur mon site (http://www.kiminvati.com).
    De plus, il me refuse l’accès à la partie administrateur (réponse : No input file specified.).

    Que faire, je suis un novice en programation.

    Merci d’avance

    André

    • Je suis désolé, mais je ne suis pas familier avec ce problème qui me semble lié à l’installation du script WANewsletter. Je vous recommende de lire la FAQ du site WANewsletter ou deposer votre question dans leur forum de support.

    • Bonjour,

      Pour faire fonctionner ce patch sur la version 2.3.1 de wanewsletter, il faut modifier un peu le bout de code mis dans admin/envoi.php comme suit :

      modifier
      $row = $db->fetch_array($result) ;
      en
      $row = $result->fetch() ;

      et il faut placer le bout de code non pas apres les lignes :
      $output->set_filenames(array(
      ’body’ => ’send_body.tpl’
      )) ;

      mais un peu au dessus, juste avant les lignes :
      $subject = htmlspecialchars($logdata[’log_subject’]) ;
      $body_text = htmlspecialchars($logdata[’log_body_text’], ENT_NOQUOTES) ;
      $body_html = htmlspecialchars($logdata[’log_body_html’], ENT_NOQUOTES) ;

      Hope this helps
      Enzo

    Répondre à ce message

  • Bonjour et merci pour ce script.

    Je viens d’installer les codes dans les pages et quand je retourne sur l’admin de Wanewsletter et que je clique sur envoi. La page s’affiche uniquement avec l’entete et le pied de page. Je n’ai plus les formulaires.

    Quelqu’un à déjà eu ce problème ?
    C’est grave docteur ?

    Répondre à ce message

  • Bonjour,

    Avant toute chose, merci pour cette super contrib qui me sert très souvent et sur plusieurs sites !

    J’essaie, de mettre en place un plug in permettant de gérer plusieurs listes de diffusions en même temps.

    J’ai essayé de faire un formulaire avec la method post, mais il me marque invariablement « session non valide ! »
    J’ai donc créé plusieurs boutons pour charger le site avec un location différent : document.location=’envoi.php ?choix=1&mode=spip’ mais du coup wanewsletter râle et me marque : Erreur d’analyse XML : mal formé en rapport avec /admin/envoi.php

    Voyez vous d’où peut venir le problème ?

    Merci d’avance !

    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