Spiplistes, les états du courrier

© Christian PAULUS. Document créé le 11 mai 2008 , mis à jour le 12 novembre 2008.

Quand on a dix pas à faire, neuf font la moitié du chemin. Proverbe chinois

Accueil du site > Outils > Spiplistes, les états du courrier

Plugin / SPIP 1.9.2d 1.9.3

Présentation technique (extrait) du fonctionnement du plugin SPIP-Listes_193 pour SPIP (1.9.2 et 1.9.3).

Ce document est consacré à SPIP-Listes_193. Il décrit les divers statuts d’un courrier et les scénarios attachés.

Ce document est purement technique. Il n’intéressera pas l’utilisateur. Il a été écrit à destination des développeurs et autres généreux participants pour l’élaboration des tests et la validation du plugin. Grand merci à tous.

Pour plus de précision sur SPIP-Listes, voir les liens en bas de page.

Tour de tables

La table SQL spip_courriers contient les courriers de SPIP-Listes. Ces courriers sont :
- soit des courriers temporaires (case des courriers en cours de rédaction, et autres courriers expédiés pour les journaux d’envois) ;
- soit des courriers générés par la trieuse pour une liste de diffusion à la date d’expédition choisie pour cette liste.

La table SQL spip_auteurs_courriers contient les étiquettes des courriers en cours de traitement.

La table SQL spip_listes contient les listes de diffusion d’où seront créés les courriers à leur date respective de diffusion.

La valeur indiquée en code dans chaque paragraphe ci-dessous est le contenu de la colonne ‘statut’ de la table spip_courriers.

Courrier en cours de rédaction

Un courrier en cours de rédaction est ignoré de la trieuse et de la mèleuse. Il lui manque l’adresse de destination (email de test ou lien sur une liste de diffusion). Son statut est ‘redac’.

define("_SPIPLISTES_STATUT_REDAC", "redac");

Courrier prêt à être posté

Un courrier prêt à être posté peut-être :

- envoyé à une adresse de test ;
- ou envoyé à une liste d’abonnés.

Ce courrier doit être posté pour être envoyé. Lorsque le courrier est plié, validé, une demande de confirmation d’envoi est demandée par l’interface s’il s’agit d’un « envoyer maintenant » ou si la date sélectionnée est antérieure à la date actuelle.

Si l’envoi est validé, son statut devient ‘ready’.

define("_SPIPLISTES_STATUT_READY", "ready");

La date du courrier indique la date de prochain envoi.

Si c’est un envoi de courrier simple mais pas d’une liste de diffusion, l’interface change le statut du courrier par ’encour’ et crée elle-même les étiquettes.

Envoi des listes

C’est la trieuse qui s’occupe des listes de diffusion. La trieuse ne s’occupe pas de la pile des courriers. Par contre, lorsqu’une liste doit être envoyée, elle génère un courrier qu’elle dépose sur la pile des courriers en recopiant la date de départ.

Les pointeurs de destination sont calculés par la trieuse qui génère les étiquettes. La pile d’étiquettes est recopiée dans la table spip_auteurs_courriers.

Lorsque la trieuse a terminé l’édition des étiquettes, elle dépose le courrier dans le casier au départ et marque le courrier par le statut ‘encour’.

define("_SPIPLISTES_STATUT_ENCOURS", "encour");

Enfin, la trieuse calcule la date du prochain envoi de la liste et passe la main à la mèleuse si du courrier est en attente d’expédition.

Courrier posté

Le courrier posté est pris en charge par la mèleuse si son statut est ‘encour’ et si la date d’envoi est fixée à la date actuelle ou antérieure. Si la date est nulle, le courrier est ignoré.

Expédition des courrier

Les courriers à expédier ont maintenant le statut ‘encour’ et la pile des étiquettes a été créée soit par la trieuse, soit par l’interface elle-même (cas d’un envoi immédiat).

Les liasses sont créées pour ne pas surcharger la mèleuse. La taille d’une liasse peut-être définie par l’interface de configuration (Nombre d’envois par lot). Par défaut, une liasse est composée de 30 étiquettes.

La mèleuse créé une liasse de courriers en tamponnant les étiquettes dans la pile d’envois (spip_auteurs_courriers) par un identifiant unique.

La mèleuse génère pour cette liasse le contenu du courrier en version html et texte seul, et place le tout dans une enveloppe. Elle envoie ensuite chaque enveloppe et le contenu du courrier au destinataire dans le format de réception demandé.

En fin de traitement (session), la mèleuse supprime la liasse de la pile des envois.

S’il n’y a plus de liasses disponibles pour ce courrier, la mèleuse modifie le statut du courrier en ‘publie’ s’il s’agit d’un courrier simple, ‘auto’ s’il s’agit d’un courrier issu d’une liste périodique (quotidienne, hebdomadaire, mensuelle ou annuelle).

define("_SPIPLISTES_STATUT_PUBLIE", "publie");
define("_SPIPLISTES_STATUT_AUTO", "auto");

Courrier en erreur

Dans certains cas, l’expédition du courrier est abandonnée par la mèleuse.

La mèleuse génère le courrier des listes à partir de patrons. Si le courrier généré est d’une taille trop faible, il est abandonné. La mèleuse change le statut du courrier par ‘vide’.

define("_SPIPLISTES_STATUT_VIDE", "vide");

Si le courrier n’a pas de destinataire, la mèleuse change le statut du courrier par ‘ignore’.

define("_SPIPLISTES_STATUT_IGNORE", "ignore");

Lors d’un envoi massif, l’interface d’administration permet de stopper un courrier en cours d’envoi. Dans ce cas, c’est l’interface qui change le statut du courrier par ‘stope’.

define("_SPIPLISTES_STATUT_STOPE", "stope");

Enfin, si la mèleuse n’arrive pas à envoyer le courrier (sendmail manquant, …), elle modifie le statut du courrier par ‘erreur’.

define("_SPIPLISTES_STATUT_ERREUR", "erreur") ;

Plussoyez !

Les forums sont fermés.