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,
je suis un nouvel utilisateur de ce plugin (je viens de spip listes)
1er envoi de 13000 impeccable avec mailjet.
Ma question :
les envois sont inscrits dans la table spip_mailshots_destinataires.
au bout d’un moment (et meme rapidement avec 13000 envois par semaines...) la base risque de saturer. Hors :
- je n’ai pas trouvé d’outils permettant la purge
- sur les conseils de cedric je n’ose la purger manuellement...
(« Il ne faut pas vider des tables avec phpmyadmin. Jamais. JAMAIS. »)
Comment faire ? je ne pense pas que la suppression soit automatisée ?
Merci pour ces beaux plugins
Bonjour Cédric,
Je pose la même question en regardant chez moi cette table de 236 044 lignes, soit environ 36 Mo : gloups ;-)
Ce qui pose un souci pour le temps de création du fichier de sauvegarde via SPIP Sauvegarder la base.
Merci pour tes lumières STP.
Un UP de rentrée ;-))))
Merci,
françois
mon oreillette me dit que tes souhaits ont été exhaussés par le dernier commit de cédric
A partir de la version 1.10 du plugin donc
http://zone.spip.org/trac/spip-zone/changeset/92515
Merci Cerdic pour la correction,
merci erational pour l’information ;)
Que se passe-t-il pour la table qui est déjà à les 236 000 lignes ? Elle va se purger en auto ou il y a une manip à faire ?
Si c’est une mise à jour du plugin (donc il était déjà installé), il faut que tu ailles valider le formulaire de configuration de celui-ci pour que la purge automatique se fasse.
Dans le cas d’une installation neuve, c’est déjà le cas.
Merci marcimat,
Je viens de lancer le cron optimiser (ainsi que les autres, au cas où...), mais ma base est passée à 307 650 lignes pour 46Mo. J’ai au passage essayé de passer à 9 mois, sans plus de succès.
Je vais y regarder demain ou attendre la prochaine campagne de 6000 envoi mercredi prochain.
Bon, j’ai relancer une mini infolettre sur 5 adresses mail, histoire que Mandrill fasse son retour et il n’y a eu aucune purge.
La configuration est réglée à 9 mois et il me reste toujours 307 655 lignes dans la table.
J’ai tous mes envois depuis le id_mailshot 1 au 73, , de la date 2014-05-14 à aujourd’hui 2015-10-30.
Mailshot 1.10.1, SPIP 3.0.20 [22255].
Dans spip.log, je trouve ça :
C’est grave doc ;)
Marcimat a bien analysé le souci et il venait du plugin Cordeille qui bloquait la tâche d’optimisation.
Donc pour que la purge fonctionne bien, il faut désactiver Corbeille ;)
Répondre à ce message
Salut,
j’ai posté sans succés sur spip-zone http://thread.gmane.org/gmane.comp.web.spip.zone/38323 du coup, je tente ici :
A chaque envoi d’une newsletter via Mailjet, Mailshot indique un X-Mailjet-campaign unique dans le header du mail pour pouvoir être identifiées chez Mailjet (cf : https://app.mailjet.com/docs/emails_headers ). Cette est valeur est de la forme //www.domaine.tld/#mailshotX (où X est l’identifiant unique de l’envoi géré par Mailshot).
Le problème est que si on a réinstallé son site (et peut être aussi si on a simplement désinstallé puis réinstaller Mailshot ?), le X-Mailjet-campaign est réinitialisé. Donc, si on essaie d’envoyer une 2e campagne, MailJet bloque l’envoi. Cf retour du support :
« Vous envoyez via SMTP, et vous avez utilisé la même valeur (x-mailjet-campaign header) pour les 2 campagnes.
Ainsi, si vous essayez d’envoyer un autre email avec un nouveau contenu à un destinataire déjà contacté en janvier, cet e-mail sera bloqué parce que vous n’avez pas changé la valeur d’en-tête x-Mailjet-campagne. »
Peut être faudrait-il ajouter un marqueur lié à la date en plus de l’id unique de l’envoi ?
Merci,
jean marie
La version 1.10.1 du plugin corrige cela
http://zone.spip.org/trac/spip-zone/changeset/92516
Super, merci !
Répondre à ce message
Bonjour,
avec un mailshot 1.8.2 et php 5.6 j’obtiens l’erreur suivant lors d’un envoi
Strict Standards : Declaration of FacteurMandrill::AddCustomHeader() should be compatible with PHPMailer::addCustomHeader($name, $value = NULL) in /../web/plugins/auto/mailshot/v1.8.2/bulkmailer/mandrill.php. on line 403
Idem... SPIP 3.0.20 [22255] sur PHP Version 5.5.28 ; plugins mis à jour dans la foulée aujourd’hui même.
idem SPIP 3.0.19 MailShot 1.8.2 - php 5.4
Strict Standards : Declaration of FacteurMandrill::AddCustomHeader() should be compatible with PHPMailer::addCustomHeader($name, $value = NULL) in /home/venissie/web/spipr/plugins/auto/mailshot/v1.8.2/bulkmailer/mandrill.php on line 198
Répondre à ce message
Bonjour,
Est-il possible de renvoyer (en utilisant l’envoi à 1 email) une infolettre qui a déjà été expédiée à une liste ? Cela semble marcher (on a un message qui dit « envoyé à ... ») mais on ne reçoit rien, on a fait plusieurs tests ...
Pierre
Répondre à ce message
Bonjour,
Après avoir constaté que l’envoi de newsletter était très lent, 2 jours pour 285 emails, j’ai mis à jour les plugins facteur - mailshot - newsletter.
Depuis les envois ne se font plus.
La newsletter est bien crée et son statut est terminé mais dans la base tout est resté en todo.
Version :
Spip 3.0.17
Facteur 3.0.20
Mailshot 1.8.1
Newsletter 1.3.7
Bonjour,
Je rencontre exactement le même problème. Envoi terminé et aucun mail envoyé depuis la mise à jour 1.8.1.
Les mails partent bien quand envoyés à l’unité mais pas via une liste.
On voit bien la liste des adresses sur la page « envois en nombre » mais tout est dans « Envois a venir »
Avez vous trouvé une solution ?
Olivier
Bonjour,
peux-tu donner plus d’infos ? Quelle version avais-tu avant la mise à jour ? Est-ce que tu as coché l’option « envoi rapide » ?
Oui bien sur, j’avais la version 1.4.1 et l’option « envoi rapide » n’est pas coché.
Pour info je passe par un smtp perso.
Après désinstallation complète (désactiver le plugin, suppression des dossiers dans le répertoire plugins de spip) et ré installation cela fonctionne a nouveau.
Répondre à ce message
Bonjour tout le monde,
Je viens de parcourir les 50 posts du forum sans trouver quelqu’un présentant un problème similaire au mien.
Je vais tenter d’être clair :
Voilà, voilà...
Spip 3.0.17, Facteur 3.1.1, MailShot 1.8.1, MailSubscribers 1.7.0, Newsletters 1.3.8
Répondre à ce message
Bonjour,
Je me demandais ce que signifiaient ces chiffres :
2075/2303 (46 fail) . Or
2303-2075 = 228 de différence
Quelle est la signification de cette différence ? j’ai en fait 228 fail ? il n’y en a que 46 pour lesquels on a une explication ? Les 46 sont dans ces 228, en plus ?
De plus si je clique sur cet envoi, le détail me dit « 2233 destinataires » et « 70 échoués », là on retrouve une logique car 2233+70=2303, mais bon, finalement je ne comprend pas la signification de 2075/2303 et des 46 fails.
Merci d’avance !
Pierre
Une précision : nous constatons cette différence à partir d’un envoi du 28/11/2014, tous les envois mensuels sur les 2 années précédentes depuis septembre 2013 nous donnent par ex
1107/1107 (8 fail)
Le mystère s’épaissit :-)
Bonjour,
Je relance cette question suite à des envois aujourd’hui. S’affiche :
Envoi n°61 // 1227/1251 (14 fail)
Envoi n°60 // 655/675 (7 fail)
Si je regarde en bas de « Suivi des envois de mails en nombre » pour cet envoi n° 60, je trouve 667 envois réussis et 8 envois échoués, là on retrouve une logique car 667+8=675 ... mais d’ou sortent les 655 et les 7 fails ... mystère. Pour le 61 on a aussi 1235+16=1251 ... avec 1227 et 14 fail, mystère again.
Bref si quelqu’un a une explication, ça m’intéresse :-)
@Pierrot,
je constate le même problème. La bonne nouvelle (il semble) c’est que si tu cliques sur le lien « Envoi N°xx », tu trouveras deux autres tableaux avec :
- Envois réussis : xxxx destinataires
- Envois échoués : xx destinataires
Du coup, le total devient bon.
J’essaye de comprendre pourquoi il y a cette différence dans le premier tableau. Peux-tu quel SMTP tu utilises ? (perso j’utilise Mailjet)
Bonjour,
J’utilise Mandrill.
Pierre
Répondre à ce message
Mailshot bloqué
Bonjour à tous, je tente d’envoyer une newsletter avec mailshot. L’envoi est configuré via l’API de Mandrill
Si j’envoie la newsletter à une personne, elle la reçoit.
Si je choisi une liste d’abonnés, en bas de l’envoi, je reçois le message suivant :
« Aucun destinataire programmé (initialisation en cours) »
Et il ne se passe plus rien...
Je vous laisse une copie d’écran, au cas où...
Il y a plus de 6 mois, j’avais eu le même problème pour un site, j’avais posé la question ici, et je n’avais pas eu de réponse. Comme il n’y avait que 30 abonnés, je me suis débrouillé avec le smtp. Mais là, j’ai 800 abonnés...
Merci,
Eric LM
Bonjour à tous, je réponds à ma question :
Je suis allé avec phpmyadmin voir ce qui se passe dans les tables. J’ai trouvé une table intitulée spip_mailshot_destinataire
Dans cette table, il y avait des enregistrements d’un envoi précédent qui n’était pas parti. Ces envois avaient le statut « todo »
J’ai vidé la table, lancé un autre envoi en nombre de test sur 3 adresses, et l’envoi est parti.
Je viens de lancer l’envoi à mes 764 adresses, et manifestement cela fonctionne.
Bonne journée,
Eric LM
Bonjour,
je suis confronté au même problème, une NL qui ne part pas avec le message « Aucun destinataire programmé (initialisation en cours) » en bas de la page ecrire/ ?exec=mailshot&id_mailshot=28
Dans la table spip_mailshots_destinataires, je n’ai aucun mail en statut « todo », ils sont tous en « sent » ou « fail ».
J’ai vidé la table, mais le problème persiste…
Il ne faut pas vider des tables avec phpmyadmin. Jamais. JAMAIS.
Si l’envoi ne démarre pas ou mets 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 la ligne
dans le fichier
mes_options.php
Bonjour Cédric, merci pour le message. Peux-tu nous expliquer pourquoi il ne faut JAMAIS vider les tables avec phpmyadmin ? Merci !
Quand on vide une table on perd des données utiles voire importantes et on risque plus de perturber le fonctionnement de SPIP ou des plugins qu’autre chose.
Le plugin est assez grand pour décider des données qu’il doit supprimer ou non :)
Merci Cedric. Je le ferai plus :-)
Tout fonctionne effectivement bien mieux depuis qu’on a mis
define('_HTML_BG_CRON_FORCE',true);
dansmes_options.php
PS en passant Ben m’a aussi appris qu’il était important de renseigner les SPF et DKIM dans Mandrill, ce que j’ignorais.
Bonjour Margranger,
Utilisateur de Mailshot/Mandrill, je te serais reconnaissant de partager ce que sont les SPF et autre DKIM et en quoi il est important de les renseigner. Merci d’avance !
D’après Mandrill,
soit (traduit à la louche) :
Pour activer cette fonction, j’ai dû ajouter un TXT RECORD dans la « zone DNS expert » chez mon hébergeur.
Voilà en espérant que ça pourra aider…
Répondre à ce message
Bonjour,
Il semblerait que l’on ait de nouveau des problèmes lors de l’envoi simultané d’une newsletter à plusieurs listes, seule la première part (tout à jour + Mandrill).
Pierre
Répondre à ce message
Bonsoir,
Depuis août 2013, j’utilise facteur avec MailShot, MailSubscribers et Newsletters (tous dernière version) pour envoyer les lettres d’information trimestrielles à environ 700 adhérents d’une association, sans aucun problème.
Or, vendredi, lors de l’envoie, impossible de rien envoyer, même pas le test dans facteur. J’obtiens
trois erreurs :
J’ai désactivé tous les autres plugins, rechargé une ancienne version de facteur (j’ai testé avec la version v3.0.16 de facteur), ( j’ai la version de SPIP 3.0.16, je suis hébergé chez Haisoft avec MySQL : 5.5.27) j’ai toujours ces même trois erreurs.
Merci
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 : |