Mailshot permet l’envoi en nombre d’emails au moyen d’un SMTP (ou d’un service externe) dédié à cet effet. Il permet de limiter la cadence d’envoi.
Enfin, ce plugin implémente la partie send de l’API Newsletter et peut donc être utilisé avec les plugins Mailsubscribers et Newsletters pour l’envoi de Newsletters.
La question du SPAM
Avant de décrire en détail le fonctionnement du plugin, il est important de souligner que l’envoi de mails en nombre est rendu de plus en plus difficile en raison de la prédominance du SPAM. Plus de 95% des emails qui circulent sur les serveurs de courriers sont du SPAM. Les opérateurs de mails (FAI, gmail...) sont donc de plus en plus stricts dans les règles de filtrage.
En tant qu’éditeur de contenu et utilisateur de ce plugin, vous avez une responsabilité : n’envoyer du contenu qu’à des utilisateurs qui l’ont sollicité par une demande explicite. Lorsque vous ne respectez pas cette règle, vous envoyez des emails non sollicités, c’est à dire du SPAM. Et vous contribuez à renforcer les règles de filtrage des opérateurs de mail.
Cette situation généralisée entraine bien des désagréments :
- certains mails légitimes n’arrivent jamais à vos destinataires ;
- en tant qu’expéditeur régulier vous risquez d’être blacklisté, voire votre serveur risque d’être blacklisté.
C’est pour cette raison que ce plugin ne permets pas d’envoyer des mails à l’aide de la fonction mail()
de PHP. Cette fonction permet l’envoi simple de mail, mais elle passe par un canal partagé entre tous les sites hébergés par un serveur. Si vous l’utilisez à mauvais escient, c’est tous les autres utilisateurs qui seront pénalisés.
C’est également pour cette raison que ce plugin propose d’utiliser un service d’envoi de mail (serveur SMTP dédié, service externe commercial) spécifique à cet usage. Ainsi, même si vos envois en nombre déclenchent - à tort ou à raison - un filtrage chez les opérateurs de mail, le reste du fonctionnement du site n’en sera pas affecté (envoi des mails d’inscriptions, de formulaire de contact, de notification de forum, de pétitions...). Utilisez cette possibilité et protégez le fonctionnement quotidien de votre site web.
Ou alors ne venez pas demander de l’aide sur vos mails en erreur, on vous aura prévenu.
Installation
L’installation du plugin nécessite le plugin Facteur qui prend en charge l’envoi des mails à l’aide d’un serveur SMTP.
Configuration
La configuration du plugin concerne le service d’envoi qui sera utilisé pour les envois en nombre ainsi que les réglages d’expéditeur (nom et email) :
Service d’envoi
Le réglage par défaut est d’utiliser le même service d’envoi que pour les autres mails (soit le serveur de mail SMTP configuré dans le plugin Facteur). Ce réglage fonctionne mais n’est pas conseillé comme indiqué plus haut.
Si aucun serveur SMTP n’est configuré par défaut, le premier choix est désactivé comme ceci :
Cette fois vous n’y couperez pas : vous devez alors absolument choisir un autre service pour l’envoi de vos emails.
Vous pouvez configurer un serveur SMTP (celui qui gère les emails de votre nom de domaine, Gmail...) (assurez vous dans tous les cas qu’il accepte que vous passiez par lui pour cet usage) :
Sinon, et c’est la solution la plus fiable, il vaut mieux utiliser un service dédié à l’envoi de mails en nombre comme Mailjet [1], Sparkpost [2] ou Mandrill [3] (disclaimer : l’auteur n’a aucun intérêt dans ces services commerciaux).
Le plugin propose aussi l’utilisation du service Mandrill, mais celui-ci est désormais soumis à l’utilisation d’un compte MailChimp payant, ce qui en restreint l’accès.
Cadence d’envoi
Dans tous les cas, que vous utilisiez un serveur SMTP ou un service externe, il est possible, voire probable, que vous soyez soumis à une cadence d’envoi maximale (nombre maximum de mails par quart-d’heure, par heure, par jour...). Dans ce cas là, convertissez cette cadence maximale en nombre de mail par jour et renseignez le champ Limiter la cadence d’envoi. La cadence sera prise en compte en espaçant l’envoi des mails de façon régulière pour ne pas dépasser cette moyenne journalière.
Envoi rapide
A contrario, si vous utilisez un service d’envoi capable d’envoyer très vite, ou de tout recevoir très vite et de mettre en attente les envois surnuméraires (c’est le cas de Mandrill notamment), vous pouvez activer l’option d’envoi rapide.
Quand cette option est cochée le plugin essaye d’envoyer aussi rapidement que possible à tous les destinataires. Notamment, en fonction du nombre d’envoi total à réaliser, il va lancer des processus parallèles pour accélérer le traitement, en étant capable par exemple d’envoyer 50 000 mails/heure si on a 200 000 destinataires.
Attention toutefois, envoyer rapidement un grand nombre de mails est une chose, mais il faut penser que cela va provoquer un pic de visites simultanées sur votre site, et que votre hébergement doit aussi être dimensionné pour absorber ce trafic supplémentaire.
Expéditeur
La dernière partie du formulaire permet de fixer les noms et emails de l’expéditeur qui apparaitra sur vos envois en nombre.
Historique des envois
Pour chaque envoi, le plugin conserve un historique de chaque adresse mail destinataire, date d’envoi, et statut (lu, cliqué, rejeté…) si il est récupéré depuis un service externe. Si vous envoyez beaucoup de lettres à beaucoup de destinataires, cela peut faire grossir la base de données de manière excessive, et dans ce cas il est préférable de purger les statistiques d’envoi pour les vieux envois.
Seul le détail des statistiques sera purgé, mais vous conserverez une statistique globale du nombre de mails reçus, lus, cliqués, rejetés…
Personnalisation du contenu des courriels
Avant chaque envoi d’un email, le plugin déclenche la personnalisation du mail à l’aide des variables qui décrivent le destinataire (voir Newsletters).
Les variables sont celles fournies par le plugin Mailsubscribers pour la description d’un inscrit :
- nom
- listes
- lang
- status
- url_unsubscribe
Pour plus de détail, voir ce que retourne la methode newsletter/subscriber
de l’API Newsletter.
Lors de l’envoi à un email unique qui n’est pas forcément inscrit, le plugin essaye de remplir au mieux les variables.
Envoi d’une Info-lettre
L’envoi d’une info-lettre se fait depuis la page d’administration de l’info-lettre, tel que décrit par Newsletters. Un formulaire d’envoi est disponible :
Si la première partie du formulaire sert à faire un envoi unitaire, c’est ici la seconde partie qui nous intéresse. En sélectionnant une liste d’inscrits, on peut déclencher l’envoi en masse à cette adresse en cliquant sur le bouton « Envoyer ! » en regard du selecteur :
On reçoit alors un message de confirmation du déclenchement de l’envoi, et l’envoi en cours apparaît en bas du formulaire. Un résumé de l’avancement apparaît (exprimé en nombre de mails envoyés par rapport nombre total de destinataires). Des boutons de contrôle permettent de mettre l’envoi en pause ou d’abandonner l’envoi.
Tant qu’un envoi est en cours, la liste est rafraichie toutes les 2minutes pour afficher la progression de l’envoi.
Suivi des envois de lot
Il est possible d’avoir une vision plus détaillée des envois de lot (passés en en cours). Pour cela, utilisez le menu Publication > Suivi des envois de mails en nombre. Vous accédez alors à une page qui récapitule les envois en cours et les envois terminés :
Les lots d’envoi en cours sont affichés d’une puce orange, les envois en pause d’une puce blanche, les envois terminés d’une puce verte et les envois abandonnés d’une puce rouge.
Si on clic sur le lien Envoi N°x d’un des envois, on arrive sur une page récapitulative complète qui expose la date et l’avancement de l’envoi, le contenu HTML et texte envoyé, ainsi que la liste des destinataires :
Les destinataires sont regroupés par statut (envoi à venir, envoi réussi, email ouvert, email cliqué, envoi échoué). Il est ainsi possible de retrouver si l’email a déjà été envoyé à un destinataire particulier, ou si il l’a ouvert, ou cliqué sur un lien [4].
Gestion des erreurs
Lorsque l’envoi à un destinataire échoue, on incrémente un compteur de tentative pour ré-essayer en fin de lot. À la 5e tentative en échec l’envoi est marqué en statut fail et n’est plus relancé.
Il est possible de personnaliser ce nombre de 5 tentatives en définissant la constante define('_MAILSHOT_MAX_TRY', 5);
La gestion des bounce est prise en charge avec le service Mandrill qui notifie en HTTP pour signaler quand un envoi a été rejeté. Dans le cas de l’envoi par SMTP on ne gère pas les bounce (l’API interne le permet au moyen de la fonction newsletter/feedback
mais il faut implémenter la partie relève d’une boite mail qui sert à collecter les bounces).
Pour le service Mailjet, l’API calcule les bounces.
Si la même adresse de destinataire a été vue en échec ou en bounce lors des 3 derniers envois (et que chacun de ces envois a réussi pour au moins un destinataire) cette adresse est automatiquement désabonnée de toutes les listes.
Il est possible de personnaliser ce seuil de 3 envois en définissant la constante define('_MAILSHOT_MAX_FAIL', 3);
En cas de non-déclenchement des envois :
Si l’envoi ne démarre pas ou met du temps, c’est parce que le cron de SPIP ne fonctionne pas ou pas assez souvent. Vous pouvez le forcer à la main en appelant l’url spip.php?action=cron
mais en général c’est lié à un hebergeur qui bloque les appels http sortant, ou un site avec vraiment très peu de traffic.
Dans ce cas, un paliatif peut-être d’ajouter dans le fichier mes_options.php la ligne :
define('_HTML_BG_CRON_FORCE',true);
Migration depuis un ancien plugin
Lors de l’installation, le plugin regarde si les plugins SPIP-Listes ou SPIP-Lettre étaient auparavant utilisés. Si les tables correspondantes sont détectées, l’historique des envois (et des destinataires si possible) est automatiquement importé. Il contient naturellement le contenu HTML et Texte qui avait été envoyé.
Après avoir installé le plugin Mailshot et vérifié que toutes les anciens envois ont bien été importés, vous pouvez désinstaller votre ancien plugin pour supprimer ses données si vous le souhaitez.
Discussions par date d’activité
127 discussions
Bonjour,
Quelle est la tache cron qui permet de purger les détails des vieux envois ? J’ai coché Effacer le détail des anciens envois Plus vieux que 3 mois mais la table spip_mailshots_destinataires n’est pas purgée dans ma base. Merci
Alors, est-ce que quelqu’un ici a compris le système d’archivage des envois ?
J’ai mis « 3 mois » pour effacer le détail des anciens envois mais je me retrouve avec des dizaines de newsletters archivées de 2008 à 2015 et des dizaines d’autres de 2015 à septembre 2016 dans la partie « Envois terminés ».
Les détails des envois dans les 2 cas semblent identiques.
Quelqu’un peut-il m’expliquer comment purger par lot les envois supérieurs à 3 mois ?
Merci
Répondre à ce message
Bonjour,
Depuis environ un mois, lorsque je fais un test d’envoi de la newsletter, j’obtiens le message suivant « SMTP Error : Could not authenticate ».
J’ai contacté le support de l’hébergeur, DRI, qui m’a assuré qu’il n’a fait de changement ni sur le serveur mail ni sur serveur web.
D’ailleurs, les messages créés dans les boîtes email chez l’hébergeur sont bien envoyés et reçus.
Avez-vous eu une idée d’où pourrait venir ce problème qui nous empêche d’envoyer les infolettres.
Merci pour votre aide et tout le travail réalisé.
Bonjour,
Le mot de passe est bien à jour ?
Pas d’espace dans les renseignements du formulaire ?
Bonjour,
Merci je regarde cela tout de suite.
Bonne soirée.
Bonsoir,
Merci pour la réponse rapide.
J’ai à nouveau vérifié les informations saisies mais elles sont bien identiques à celles qui existaient lorsque les infolettres pouvaient être envoyées.
J’ai fait aujourd’hui un envoi d’email à une liste de diffusion avec les mêmes coordonnées et le message est bien parti et arrivé.
Répondre à ce message
Bonjour,
J’utilisais pour l’instant « Ma Lettre » pour envoyer des news, avec le plugin Facteur et une liste free sous ml.free.fr, cela fonctionne bien mais je dois modifier en dur le squelette pour avoir une lettre d’accompagnement.
J’ai voulu utiliser newsletters, donc obligé d’installer les plugins mailsubscribers et mailshot et la ça se gâte, jusque l’a j’utilisait le service de mail standard php, free n’appréciant pas vraiment l’envoi en groupe, d’ou l’utilisation de la liste ml.
mailshot ne me donne comme choix que d’utiliser une liste prédéfinie, mailjet, sparkpost, ..
Y a t’il une solution et si oui, comment prendre en compte ma liste free ?
Merci par avance de votre aide.
j’utilise SPIP 3.0.22 avec Sarka-spip 3.2.36, serveur free avec base Mysql
Bonsoir,
Une suggestion : publier la newsletter puis « Envoyer à 1 personne » à l’adresse email, soit celle de la ml
Bonjour,
Merci pour cette réponse.
Je me suis résolu à utiliser ce moyen.
Cependant il est dommage que la liste des ml soit fermée, il serait intéressant d’avoir la possibilité de paramétrer une ml autre (pour moi ml.free), peut être une évolution à venir ?
Bonsoir,
C’est plus ce plugins a utiliser non https://contrib.spip.net/Abomailmans-pour-s-abonner-a-des-listes-de-diffusion ?
Ou bien géré les abonnés dans SPIP.
Répondre à ce message
bonsoir,
utilisateur de mailshot avec sparkpost depuis pas mal de temps, et à vrai dire, ne regardant pas très souvent le détail du fonctionnement qui globalement... fonctionne !
Je me lance dans un peu de purge des inscriptions et je constate des envois « échoués » par mailshot et qui sont en bounce ou generation rejection dans sparpost... alors qu’ils ne sont plus inscrits dans mailsubscribers...
Autrement dit, mailshot prendrait qq part dans un cache des listes d’envoi anciennes...???
Y-a-t-il qqchose à faire pour forcer la réinitialisation de mailshot...???
merci d’avance
pam
C’est plus surement le contraire qui s’est produit : comme l’envoi à ces emails a été rejeté ou bloqué par SparkPost, mailshot a désinscrit l’adresse correspondante. Du coup il n’y aura plus d’envoi dans le futur.
Tu as sans doute raison, mais alors, elles sont plusieurs fois en échouées avant d’être désinscrits... et je n’arrive pas à comprendre... Je suppose qu’il y a une règle (au bout de 3 bounce ou peut-être au bout de n hardbounces et m softbounces" ?.. Quand je remonte dans l’historique des envois, je vois bien des adresses qui sont plusieurs fois dans échouées.. et qui sont aujourd’hui désinscrites...
Est-il imaginable de trouver pour chaque adresse désinscrite la trace de ces envois et retours...?
dans les logs bien sûr, mais on peut imaginer unepage ?
merci en tout cas pour ces plugins...
pam
Répondre à ce message
Pour info : maj auto impossible pour mailshot, et DL du .zip = network error
Répondre à ce message
Bonjour,
Je souhaiterais remonter un petit, suite à l’envoi d’une newsletter, l’aperçu de celle est erroné, il semblerait qu’il y une erreur de table de caractère, mes courriers sont en UTF8 bien entendu.
Les é deviennent des é, les ç des ç et ainsi de suite avec tous les caractères diacritiques.
En vous remerciant,
Jul
Bonjour,
Il semblerait que mon voeux est exaucé, mes emails sont désormais correct ;)
Malheureusement les emails ne partent plus ! J’utilise SPARKPOST et voici le message d’erreur :
3000 substitution language syntax error in template content array ( ’options’ => array ( ’open_tracking’ => false, ’clic_tracking’ => false, ), ’campaign_id’ => ’’, ’recipients’ => array ( 0 => array ( ’address’ => array ( ’email’ => ’truc@machin.fr’, ’name’ => ’’, ), ), ), ’content’ => array ( ’from’ => array ( ’email’ => ’truc@machin.fr’, ’name’ => ’truc machin, ), ’subject’ => ’Petites annonces quotidiennes’, ’headers’ => array ( ’Precedence’ => ’bulk’, ), ’text’ => ’...’, ’html’ => ’...’, ), )
Cordialement,
Julien
Répondre à ce message
Bonjour,
J’utilise mailshot hors de Newsletter avec un plugin fait maison, ca marche au poil j’en suis très heureux :)
J’ai un bémol malgré tout, je voudrais pouvoir fournir un ’ReplyTo :’ pour chaque envoi différent, car dans l’état le Replyto est une config générale valable pour tout le site... Je vois que l’on peux configurer le « From » mais cela ne me suffit pas.
D’un autre point de vue, si on regarde « Facteur », il a une option qui permet de forcer le « from » des emails quand le domaine n’est pas celui configuré dans l’API, ce faisant le from original devient le replyto, cela me convient également.
J’espère être assez clair... Le but de la manoeuvre étant que les destinataires puissent répondre à l’expéditeur de l’email et non à une adresse unique.
Un grand merci à vous,
Jul
Répondre à ce message
Bonjour,
Quand j’essaye de faire un test d’envoi sur un site avec la suite de plugin Newsletter, j’ai l’erreur suivante :
Unauthorized. array ( 'options' => array ( 'open_tracking' => false, 'clic_tracking' => false, ), 'campaign_id' => '', 'recipients' => array ( 0 => array ( 'address' => array ( 'email' => 'postmaster@toto.fr', 'name' => '', ), ), ), 'content' => array ( 'from' => array ( 'email' => 'tutu@tata.com', 'name' => 'Loulou', ), 'subject' => '[TEST] Test', 'headers' => array ( 'Precedence' => 'bulk', ), 'text' => '...', 'html' => '...', ), )
Tous les plugins sont à jour, spip en 3.0.22. Le système d’envoi est SparkPost mais à priori je dirais que ça n’est pas la cause car on a déjà fait des tests et ça marchait, mais bon, sait-on jamais .. Une idée de la cause ?
J’ai aussi essayé avec une autre newsletter ultra basique (2 mots), idem. Avec un autre destinataire, idem. L’email d’envoi est bien dans le domaine validé chez SP, SPF, DKIM, tout est ok .. ;
Bon j’ai résolu en re-créant une clé API chez SparkPost, ça marche, pas compris la raison ...
Pierre.
Répondre à ce message
Bonjour,
Je cherche à « Embarquer les images référencées dans les emails » pour envoyer les lettres d’information. Le plugin Facteur propose cette option mais lorsque dans Mailshot, je choisi l’option « Utiliser le même service d’envoi que pour les autres mails », les images ne sont pas embarquées. Y aurait-il une solution ? Merci et bonnes fêtes !
Voici la solution :
Dans le plugin, /bulkmailer/defaut.php
ligne 48 : ’filtre_images’ => true
Il ne faut pas faire ça. L’envoi de mail en nombre est une pratique intrusive, et même si les personnes qui les reçoivent ont bien donné leur accord en principe (en pratique je constate que cette règle est souvent approximative du fait de l’origine des inscriptions), elles ne choisissent pas quand elles reçoivent ces mails.
Or un mail html simple qui référence les images ne pèse pas trop lourd (quelques dizaines de ko), mais un mail html qui embarque les images pèse lui des centaines de ko voire plus selon la nature, taille, dimension des images.
Pour un utilisateur qui reçoit cela sur son mobile en déplacement avec une connexion fluctuante c’est tout simplement une grosse galère. La récupération de ce mail peut prendre de longues minutes pendant laquelle aucun autre mail n’est récupéré. Bref c’est « pain in the ass » et c’est vraiment pas sympa.
D’un point de vue plus écologique global, 95% du trafic mail correspond à de l’envoi en nombre automatisé plutôt qu’à de l’envoi simple de personne à personne. Si tout ce trafic se trouvait à embarquer ses images, toute l’infrastructure des serveurs mails devrait absorber une multiplication de x10 ou x100 du volume de trafic, ce qui est une hérésie.
C’est pourquoi je n’ai pas mis cette option dans l’envoi des mails en nombre, et c’est pourquoi il ne faut pas le faire.
Cerdic, je salue ton engagement dans l’opensource et dans SPIP en particulier.
Mais de tous les canaux marketing, le bon vieil e-mail reste numéro un du ROI.
« Une image vaut mille mots » disait Confucius et celle-ci est au cœur des stratégies numériques actuelles.
Quid des Snapchat et autres millions de MMS envoyés via les réseaux ?
Et puis surtout, quid de la liberté de disposer d’une technologie ?
Je pense qu’offrir cette possibilité à cet excellent plugin Mailshot serait logique puisque facteur le propose. D’où mon interrogation.
Alors je te l’accorde, avec peut-être une mention "attention : très gourmand en ressource !"
Encore merci pour ton travail.
Répondre à ce message
Bouhhh, je suis triste
Je * voulais * utiliser la fonction mail() de PHP pour l’infolettre de ce site en particulier.
Alors ?
Un logiciel libre qui restreint ma liberté de faire un choix particulier, c’est troublant !
Bon, je comprend qu’on ne facilite pas ce choix particulier pour des débutants n’ayant pas conscience des conséquences potentielles, mais y a t’il moyen de le faire pour ceux qu savent ce qu’ils font ?
Comment puis-je utiliser la fonction mail() de PHP ?
Un insert dans mes_fonctions ?
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 :
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.
Suivre les commentaires : |