Carnet Wiki

Compléments trilogie mailshot

Version 13 — November 2018 JLuc

La trilogie c’est
-  mailshot : gestionnaire d’envois
-  mailsubscriber : gestionnaire de listes
-  newsletter : créateur de mails

Les segments

Question : « j’ai des listes de destinataires “CA”, “Adhérants”, “intervenants”, “presse” mais quand j’envoie une lettre à tous ces groupes, ceux qui font partie de plusieurs groupes la reçoivent en multiple exemplaires. Comment fonctionnent les segments et cela puis je m’en servir ? »

Réponse à confirmer et préciser : Le mieux est de commencer par créer un nouveau groupe de motclé. Les motclés de ce groupe serviront à qualifier les destinataires des listes, et lors de la création du groupe, il faut donc indiquer qu’il servira à qualifier les “inscrits aux listes de diffusion” (et pas les articles ou rubriques etc).

Par exemple on créera un groupe “statuts_associatif” et des motclés “CA”, “Adhérant”, “intervenant”, “presse”, etc et c’est cela qui servirait à distinguer les inscrits.
Du coup il n’y a qu’une seule liste de destinataire, mais tu attribuerais les motclés qui vont bien à chacun des membres. Evidemment tu peux aussi garder une liste “presse” à part (par exemple) et dans ce cas pas de motclé “presse”.

Rq : au lieu des motclés, ça peut être aussi des champs extras de la table spip_mailsubscribers, déclarés avec le plugin cextras.

Ensuite il faudrait créer les segments. Il y en aurait un en rapport avec chaque motclé du groupe segmentant. Ça se fait dans la page d’aministration de la liste. Le fait de créer le groupe de motclé associé aux destinataires de liste ajoute automatiquement un SELECT dans le formulaire de définition d’un segment pour indiquer “dans ce segment il y a les inscrits de la liste qui ont ce motclé”. Et il y a une case pour que les destinataires concernés par chaque segment soient raffraîchis automatiquement.

Ensuite, chaque segment est traité comme une liste, càd que quand on veut envoyer une newsletter, on peut choisir un segment en destinataire.

On peut donc avec une seule liste et les segments reproduire tout ce que tu fais avec plusieurs listes. Mais pour cela, dans ton cas avec un historique à gérer, il faudrait une moulinette php mysql pour convertir une fois pour toute l’appartenance à tes anciennes listes de chaque mailsubscriber en un ou plusieurs motclés qui lui serait affecté.

Et a priori, vu la structure des tables, avec les segments les envois ne sont pas doublonnés ensuite. Mais ça reste à vérifier.

Extension

Le fonctionnement de base des segments, décrit ci dessus, peut s’étendre au moyen d’un pipeline mailsubscriber_informations_liees dédié. Ce pipeline est appelé en 2 endroits
-  1) pour déclarer les saisies qui permettent de qualifier un mailsubscriber. Pour cela il reçoit l’argument

$flux = array( 'args' => array('declarer' => true),	
       'data' => $infos); 

.
Le pipeline doit retourner un tableau complétant (ou corrigeant) la déclaration des saisies par défaut qui se trouve déjà dans $infos.
-  2) pour décrire un mailsubscriber. Le pipeline reçoit alors l’argument

$flux = array('args' => array('email' => $email, 'id_mailsubscriber' => id_mailsubscriber),
		'data' => $infos );

où $infos est le tableau des couples (champs extra, valeur) et (groupemot, tableau des identifiants de motclés) décrivant le mailsubscriber, et qui doit être complété.

Autre exemple de liste dynamique

/**
 * Mailing liste des auteurs abonnés
 * @return array
 **/
function mailsubscribers_synchro_list_newsletter_subscribers() {
	$id_auteurs = ids_auteurs_abonnes_valides_complets();
	$auteurs = sql_allfetsel(
		"DISTINCT(A.email),C.nom,C.prenom",
		"spip_auteurs AS A JOIN spip_contacts AS C ON (C.id_auteur=A.id_auteur)",
		array(
			sql_in('A.statut', array('1comite', '6forum')),
			sql_in('A.id_auteur', $id_auteurs),
			"A.email != ''"
		)
	);
	return $auteurs;
}

Autres modèles de Newsletter

La page Autres modèles de NewsLetter recueille d’autres modèles de Newsletter.

Notification de désinscription

Les mails envoyés via mailshot par mailjet incluent un lien de désinscription. Lorsqu’un internaute clique ce lien, mailsubscriber le désinscrit et l’internaute reçoit un mail composé par l’assemblage des de chaines de langues définies par mailsubscriber, qu’il est possible de surcharger localement.

Embarquer des images

L’option “Embarquer les images” de facteur est surchargée par mailshot, si bien que les images ne sont jamais embarquées.

Il est toutefois possible d’embarquer les images avec mailjet + SMTP (mais pas avec l’API ni avec sparkpost) en créant dans mes_options.php une fonction bulkmailer_defaut qui reprend le code de bulkmailer_defaut_dist sauf pour la ligne qui force 'filtre_images' => false qui doit devenir 'filtre_images' => true .

Bugs et points améliorerables

-  Difficulté rencontrée : j’avais choisi le modèle “Nouveauté” pour voir ce que ça donnait, et prévisualisé. Ce modèle utilise les derniers articles pour les insérer dans l’infolettre. Puis j’ai choisi “Typographique”, mais tous les articles sont restés (temporairement) attaché, et je ne pouvais plus valider la newsletter (erreur de validation sans raison indiquée) et je ne savais comment sortir de cet état intermédiaire foireux. Après une frayeur certaine, F5 a rétabli une situation saine.

-  Ajouter sur la page “Listes de diffusion” un bouton “Forcer la synchronisation des listes

-  Dispersion des menus éparpillés dans plein de menus différents :

  • Edition > Infolettre
  • Publication > Suivi des envois de mails en nombre
  • Activité > Inscrits aux envois par mail
  • Activité > Listes de Diffusion

Ainsi que, dans une moindre mesure :

  • Configuration > Facteur
  • Configuration > Plugins > Mailshot > Configuration
  • Maintenance > Liste des travaux

Nouveautés

Forcer la synchronisation d’une liste dynamique

La synchronisation des listes dynamiques se fait 1 fois toutes les 24h. Si vous avez laissé passer ce moment, que vous savez que votre liste à changé (par exemple parce que vous êtes en train de mettre au point sa fonction de définition dynamique), vous pouvez forcer la synchronisation en vous rendant dans la page Maintenance > Liste des travaux. Là vous trouverez une tâche mailsubscribers_synchro_lists dont vous pourrez forcer l’exécution en cliquant sur le bouton “Exécuter”. Cette tâche parcours alors toutes les listes dynamiques, et demande leur synchronisation... Cela se traduit par la création d’un nouveau job de synchronisation pour chacune des listes dynamiques définies. À ce moment, vous pouvez attendre que les synchronisations de toutes vos newsletters se fasse. Ou bien vous pouvez forcer l’actualisation immédiate de la newsletter de votre choix, en cliquant sur le bouton “exécuter” de cette tâche. Et par la suite, tant que cette tâche sera visible sur la page Liste des travaux, il vous sera possible de forcer à nouveau la synchronisation immédiate d’une liste.

La page Activité > Listes de diffusion montre le nombre d’abonnés à chaque liste et permet de savoir, au moins lors de la création de la liste, si la synchronisation s’est bien faite.

DONE : un raccourci ajouté dans la page des listes de diffusions permet de forcer la resynchronisation.