SPIP-Listes-V, doc technique (I)

© Christian PAULUS. Document créé le 30 août 2007 , mis à jour le 23 mars 2008.

Pour un esprit équilibré, la mort n'est qu'une grande aventure de plus. Joanne Rowling

Accueil du site > Outils > SPIP-Listes-V, doc technique (I)

Plugin / SPIP 1.9.2b

Présentation technique du fonctionnement du plugin SPIP-Listes-V pour SPIP 1.9.2b.

Ce document n’est pas un mode d’emploi du plugin, ni un guide d’installation, mais une simple présentation du processus courrier/liste de SPIP-Listes-V.

Nota : vous aurez remarqué le V à la fin de SPIP-Listes-V. Ce V indique ici une variante de SPIP-Liste, plugin qui a largement inspiré la mise en œuvre de SPIP-Listes-V. Voir si besoin la page de présentation de SPIP-Listes-V.

Ce document n’explique pas le principe de fonctionnement de SPIP-Listes, mais celui de SPIP-Listes-V. Et même si SPIP-Listes-V doit – en principe – être capable de récupérer les courriers et listes de SPIP-Listes, l’inverse n’est – pour le moment – pas facile à effectuer (mais pas impossible, avec quelques requêtes SQL bien placées). SPIP-Listes-V ajoute des statuts aux courriers, se sert des dates début et fin d’envoi pour les chronos, etc.

Ce document est destiné aux développeurs, pas aux utilisateurs (quoique...) La documentation utilisateurs est disponible dans le menu aide après installation du plugin.

PNG

Le développement de SPIP-Listes-V a pris fin avec l’incorporation des ses principales fonctionnalités dans SPIP-Listes_193. Voir la page de la documentation fonctionnelle de SPIP-Listes_193 pour plus d’informations à ce propos.

Les grands principes

Il faut d’abord bien faire le distinguo entre un courrier et une liste d’abonnement (qui s’appelle parfois chrono) tels que ces termes sont employés dans SPIP-Listes-V.

Un courrier est un message unique, non périodique, dont l’envoi est décidé par un administrateur. Pour rédiger ce courrier, l’administrateur peut composer son contenu dans un formulaire d’édition soit à partir de rien, soit à partir de la génération d’un contenu obtenu à partir d’un patron (un patron est un squelette SPIP dédié à SPIP-Listes).

Un abonnement est un message périodique, dont le contenu est généré à partir d’un patron. L’administrateur ne peut pas changer le contenu (sauf à modifier le patron). L’envoi périodique (en jour) est effectué automatiquement par SPIP. Cet envoi est précédé dans ce cas de la traduction du patron, a contrario de l’envoi courrier qui lui, traduit – si besoin – le patron lors de la création du courrier.

Les dates d’envois

La date de début d’envoi peut être fixée pour l’envoi d’un courrier (qui est unique) et pour l’envoi des abonnements (qui est périodique). Si vous voulez forcer un envoi immédiat, demandez l’envoi immédiat, ou demandez l’envoi à une date inférieure à la date actuelle.

Un délai de temporisation (quelques minutes) est ajouté à la date d’envoi souhaitée, afin de vous permettre de corriger cette date si besoin. Un envoi immédiat n’apparaît donc pas immédiatement dans le panier des envois en cours. Patientez quelques minutes.

Les statuts des courriers

Un courrier peut avoir comme statut :
- redac : en cours de rédaction. Ce courrier n’a pas de date de début d’envoi, ni de liste de destination ;
- ready  : la date de début d’envoi et la liste de destination ont été fixées. Le départ peut être validé ;
- encour  : le courrier a été placé dans le panier départ. Il sera pris en charge par la meleuse lorsque la date de début d’envoi correspondra à la date de traitement des envois ;
- ignore  : est un courrier adressé à une liste d’abonnement qui n’a plus d’abonnés. Ce statut est placé par la trieuse ou la meleuse ;
- vide  : est un courrier sans contenu, qui n’a donc aucune raison d’être envoyé. Ce statut est placé par la trieuse ;
- stop : est une courrier stoppé en cours d’envoi ;
- publie  : est un courrier envoyé. Ce statut est placé par la meleuse dès le premier envoi (si le courrier est adressé à des milliers de personnes, le courrier est considéré comme publié dès l’envoi à la première personne).

Le bureau de poste

Il est composé d’une trieuse et d’une meleuse.

La trieuse se charge de dupliquer les courriers chronos (envois périodiques) qui sont listés dans les listes de diffusion. Pour chaque liste de diffusion dont la date et la période sont cohérentes, la trieuse traduit le patron attaché à cette liste et en crée un courrier qu’elle ajoute dans le panier des envois (statut encour). Si la date souhaitée d’envoi ne correspond pas à la date en cours, la trieuse passe son chemin. Elle traitera cet envoi plus tard.

Le bureau de poste (géré par le CRON) passe ensuite la main à la meleuse, qui a pour seule tache de prendre les courriers du panier encour, d’en prendre une liasse dont la taille est limitée pour ne pas surcharger le serveur, puis de rendre la main au bureau de poste.

Les courriers sont envoyés ainsi par liasses, au fur et à mesure des appels au bureau de poste, c’est-à-dire à chaque visite du site.

Les courriers en envoi immédiat ne passent pas par la trieuse. Ils sont directement placés dans le panier des envois lors de la validation dans le formulaire des courriers. A vous d’indiquer une date de diffusion. Vous pouvez très bien créer un courrier personnalisé ou généré à partir d’un patron, et demander son envoi dans 3 mois. Seul détail à prendre en compte dans ce cas, c’est l’attachement de ce courrier à une liste. Dans le cas d’un courrier immédiat (ou retardé), la meleuse ira chercher les destinataires du courrier dans la liste attachée à la date souhaitée de l’envoi. Si cette liste ne contient plus d’abonnés lors de l’envoi, le courrier ne partira pas et ira rejoindre les autres courriers de ce type dans le panier des courriers ignorés.

Les capacités d’envois du bureau de poste sont limitées par le nombre de visiteurs journaliers. Si votre site ne voit passer qu’une dizaine de visiteurs par jour, la liasse étant limitée par défaut à 30 courriers maximum, il ne pourra y avoir que 300 envois par jour, au mieux (le CRON a aussi d’autres tâches à effectuer. Il ne passe pas la main au bureau de poste systématiquement).

Le scénario de la trieuse

La trieuse cherche dans les listes de diffusion (spip_listes) celles dont la date de prochaine diffusion (maj) est égale ou inférieure à la date en cours, en commençant par les messages marqués ‘message_auto=non’, puis ceux marqués ‘message_auto=oui’.

Pour chaque liste correspondant à ces critères, la trieuse génère le courrier à partir de son patron respectif dans les deux formats éventuels :
- HTML, qu’elle glisse dans spip_courriers:texte ;
- Texte seul, qu’elle glisse dans spip_courriers:message_texte.

Ce nouveau courrier n’est donc calculé qu’une fois. Les adresses (étiquettes de destination) sont dans spip_auteurs_courriers. La meleuse se servira de ce paquet d’étiquettes pour finaliser l’envoi.

Ainsi, si vous lancez une nouvelle liste et fixez la première date d’envoi dans 3 mois, ce seront les abonnés inscrits au bout de ces 3 mois qui recevront le courrier.

Le nouveau courrier peut recevoir le statut :
- encour, s’il est cohérent (du texte, des destinataires) ;
- vide, si le texte est vide ;
- ignore, si pas de destinataires (liste de diffusion sans abonnés) ;
- stop, si vous arrêtez l’envoi en cours.

Le type devient :
- liste si la période est fixée (> 0) ;
- nl si la période est nulle (envoi sans périodicité).

Une fois le courrier généré, la trieuse change la date de prochaine publication (spip_listes:maj) si la période est un entier positif (période est exprimé en jours). Si la période est nulle ou négative, la date de prochaine publication est mise à 0 (zéro).

Le scénario de la meleuse

La meleuse prend un paquet de courriers à envoyer dans les paniers, que ces courriers soient préparés par la trieuse ou non (la trieuse ne s’occupe que des listes de diffusion).

La taille du paquet (spiplistes_lots) est limitée pour éviter d’engorger le serveur.

La meleuse prépare l’enveloppe, traduit le courrier (en tenant compte du charset), ajoute l’adresse de retour (reply-to) et celui de l’émetteur (spip_listes:email_envoi) et le glisse dans l’enveloppe après y avoir ajouté la tête de page et le pied de page (modeles) ainsi que le pied de mail avec son lien de désabonnement. Enfin, la meleuse ferme l’enveloppe et envoie le courrier.

Lorsque le courrier est envoyé à une adresse de test, la meleuse l’envoie deux fois à l’adresse email de test, une première fois au format HTML, un seconde au format texte seul.

Lorsque le courrier a été envoyé, son statut passe à ‘publie’ sauf s’il s’agit d’un envoi de test. Dans ce dernier cas, le courrier retrouve son statut ‘redac’. Si vous arrêtez l’envoi en cours, le courrier prendra le statut ‘stop’.

Plussoyez !

Les forums sont fermés.