Mailshot

Ce plugin prend en charge l’envoi en nombre d’info-lettres par email.

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.

N’utilisez pas le serveur SMTP de votre fournisseur de mail pour envoyer vos emails en nombre, mais uniquement un serveur SMTP dédié à ça. Si vous n’en avez pas, utilisez un prestataire d’envoi d’emails en nombre.

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) :

Configuration du plugin Mailshot
Configuration du plugin Mailshot

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 :

  • email
  • 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 5ème 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.

Footnotes

[1pour bénéficier des fonctions de statistiques d’envoi au sein de SPIP, il faut utiliser l’API v3 de Mailjet

[2pour bénéficier des services de Sparkpost, il faudra que votre serveur fonctionne sous php 5.5.0 minimum

[3qui nécessite maintenant un compte Mailchimp payant

[4les fonctions de tracking sont implémentées avec les services Mailjet, Sparkpost et Mandrill

Portfolio

updated on 2 October 2019

Discussion

107 discussions

  • Hello.

    Voici un petit script utilitaire pour désabonner des emails en masse.
    Cela peut être utile, par exemple, pour nettoyer des emails en bounce suite à l’import d’emails un peu vieux et moisis et que l’on ne peut pas se faire griller auprès de sa plateforme d’envois
    http://spip.pastebin.fr/52881

    Reply to this message

  • Salut à tous,

    Petit retour sur cet excellent plugin, il semblerait (j’en suis même sûr) qu’un mail inscrit sur N listes reçoivent N fois la newsletter.

    • On peut vouloir s’inscrire à plusieurs listes.
    • On peut vouloir envoyer une newsletter à plusieurs listes.
    • Mais la recevoir une seule fois est suffisant.

    Il ne manquerait pas un mécanisme du genre «Vérifier si la newsletter n’a pas déjà été envoyée sur cet email» ?

    Reply to this message

  • 3
    Jaseur Boréal

    Bonjour
    Sur un spip 3.2 à jour avec “Facteur 3.5.0 - stable” + “MailShot 1.22.4 - stable” dernières versions.

    Hier, à ma demande, les techniciens chez Mailjet ont migré mon compte d’une vieille version “V1 in.mailjet.com” vers la dernière version “in-v3.mailjet.com”.
    Les clés ne changent pas, seul le réglage du choix de sous-domaine Mailjet a été modifié dans Facteur & Mailshot pour la V3 avec la configuration de Mailshot bien enregistrée.

    J’ai vérifié que dans “Facteur” et dans “Mailshot” les réglages de ports soient similaires.

    Les tests de départs de courriels de Facteur tournent indéfiniment ou donnent des erreurs type : “SMTP Error: Could not connect to SMTP host.”
    Les emails ne partent pas quelques soient les réglages de port ou de connexion sécurisée TLS , SSL ou pas.

    Le technicien de Mailjet m’écrit : “Si les mails partent de Mailshot, il faudrait entrer en contact avec eux et ils devraient être en mesure de déterminer précisément à quel niveau cela bloque en consultant leurs logs.”

    Les réglages actuels :

    Réglages utilisés du plugin Facteur & Mailshot :
    Utiliser SMTP Hôte : in-v3.mailjet.com
    Port : 465
    Requiert une authentification : oui
    Nom d’utilisateur : xxxx
    Mot de passe : yyyy
    Connexion sécurisée : TLS (recommandé
    Validation du certificat SSL le certificat SSL du serveur SMTP est émis par une Autorité de Certification (recommandé).

    Avez- vous une idée d’un réglage oublié ?
    Merci pour toute piste de solution.

    • Dans la configuration de Mailshot, il vaut mieux utiliser le choix “Mailjet” au lieu de “Serveur SMTP”, cela permet d’utiliser l’API complète de Mailjet et les réglages sont plus simples.

      Pour Facteur j’ai la même chose que toi, sauf pour le port (25 au lieu de 465), et ça fonctionne bien

    • Jaseur Boréal

      (suite)
      Pour info Les infolettres de test du plugin newsletter partent correctement et sont réceptionnées dans les minutes qui suivent,
      alors que le plugin Facteur affiche l’erreur : “SMTP Error: Could not connect to SMTP host.”

    • Jaseur Boréal

      Ma configuration de Mailshot est réglée sur mailjet depuis plusieurs années. Le choix “Mailjet” de l’API Version 3 n’est que depuis hier. Ce serait apparemment “Facteur” qui dysfonctionnerait pour ses propres tests ?

      -  Facteur : Regroupe toutes les fonctions avancées autour de l’envoi de courriels.
      -  Mailshot : Permet l’envoi en nombre d’emails au moyen d’un SMTP externe.

      Dois-je comprendre que Mailshot n’a pas besoin de Facteur pour fonctionner ?
      Mais que facteur a besoin de savoir comment Mailshot fonctionne ?

      J’ai parfois quelques difficultés à bien comprendre les rôles respectifs et les interactions entre Facteur et Mailshot.

    Reply to this message

  • 1

    Bonjour
    j’utilise Mailshot avec Mailjet depuis un an environ ; aucun problème jusqu’à cet été, où nos newsletters ont arrêté de pouvoir être envoyées..
    je me suis tourné vers mailjet pour savoir d’où pouvait provenir le problème ; leur dernière réponse, après pas mal d’échanges, est la suivante :
    “Après une enquête approfondie, nous avons constaté que le plugin SPIP fonctionne très bien. Nous pouvons envoyer et recevoir des emails. Cependant, lorsque vous tentez d’utiliser Newsletter avec Mailshot, la situation est complètement différente. Aucun e-mail n’est envoyé depuis nos comptes de test. Nous avons essayé d’utiliser les autres fournisseurs de services et il semble que le processus d’authentification n’ait pas été déclenché. le module accepte tout type de mot de passe, ce qui indique que l’authentification ne fonctionne pas. Par conséquent, la cause première du problème n’est pas MailJet, Mandrill ou tout autre fournisseur de services - mais le problème est entièrement dans le module Mailshot. Ni Mandril ni Sparkhost n’envoient aussi. Notre meilleur conseil est de contacter les développeurs / créateurs de Mailshot et de vérifier avec eux.Je reste à votre disposition, n’hésitez pas à me contacter si vous avez encore des questions.”
    Je ne suis pas développeur, du coup pas mal de choses m’échappent complètement ; quelqu’un saurait-il d’où peut venir le problème ???
    merci !

    • Jaseur Boréal

      Bonjour,

      Sur un SPIP 3.2.0 hébergé chez OVH, je ré-utilise le service d’envoi Mailjet par Mailshot avec le plugin newsletter, afin d’automatiser la conception d’une newsletter selon l’édition des derniers articles parus, à envoyer vers les abonnés.

      Précédemment, pour d’autres besoins en dehors de spip, j’ai utilisé les services d’envois de courriels en nombre Sendinblue, car leurs outils de conception plug and play d’infolettres personnalisées, avec gestion pointue des listes, sectorisées, avec des statistiques précises d’envoi,de vitesse d’ouvertures, ... etc . Sur des envois plurilingues renouvelés de petits nombres d’emails (entre 1000 et 4000) en direction de 7 pays d’Europe, il était facile de programmer et tester les heures de départ en fonction des fuseaux horaires et des diverses habitudes culturelles et professionnelles selon ces pays pour optimiser les expéditions différents pays d’Europe. En trente minutes les envois de plusieurs milliers d’emails furent réalisés à chaque fois.

      Avec Mailshot, c’est incomparable ...
      Pendant 5 heures entre 13h et 18 h, mailshot + mailjet .... n’ont fait partir que 38 emails
      A raison de presque 8 emails par heure qui partent ! Cela irait plus vite de les faire partir individuellement à la main !

      Je me rend compte qu’avec Mailshot + facteur + mailjet, cette précision de départ des emails en assurant une délivrabilité maximum, n’est pas possible, car la vitesse de départ des emails est d’une lenteur impossible !

      Dans ce cas, aucune “programmation” intelligente des envois en fonction des habitudes et des fuseaux horaires ne peut être réalisée.

      Que se passe-t-il ? Je ne comprends pas bien !
      Y a-t-il un réglage oublié ?
      Est-ce spip ou Mailjet qui freine ainsi ?

      Existe-t-il une solution pour expédier rapidement et normalement des infolettres avec spip ?
      Faut-il préférer se faire expédier sur une seule adresse l’infolettre construite pour la réexpédier sur un service d’envoi en nombre qui la diffusera à une vitesse normale ?
      Je cherche des solutions adaptées.

      Comment réellement utiliser SPIP avec les fournisseurs francophones & Européens d’envois d’emails en nombre que sont Maijet, Sendinblue, MailerLite ?

      Qu’en dites-vous ?
      Merci de toutes vos solutions.

    Reply to this message

  • Dans les logs du serveur web apparait très souvent l’appel de :
    /mailshot_webhook.api/

    Avec en plus un code retour en 403. Alors que l’on n’envoi pas de newsletter (sinon tout marche super avec les trois plugins).

    Est-ce bien normal ? Problème de config ? Pour ces appel intempestif à une URL qui n’existe pas à première vue...

    Merci de vos idées / pistes / aide.
    Julien

    Reply to this message

  • 1

    en voulant envoyer une infolettre à 1 destinataire, j’ai le message :
    Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.

    Je ne sais comment faire ... Est-ce le SMTP ?

    • Bonjour,

      désolé, c’est un peux tard de vous poser cette question. Est ce que vous avez résolu votre problème? parce que j’ai le même message d’erreur suite au passage en mode sécurité; https au lieu de http avec mon hébergeur.

    Reply to this message

  • 3

    Hello cerdic :-)
    J’arrive pas à savoir la version de la lib que le plug utilise concernant sparkpost :-(
    Par contre, en lisant le change log, je viens de me rendre compte, qu’il faut au minimum php 5.5
    https://github.com/SparkPost/php-sparkpost/blob/master/CHANGELOG.md

    Donc, je propose de mettre dans paquet.xml:

    1. <necessite nom="php" compatibilite="[5.5.0;]" />

    Cela dit, c’est à réfléchir, car comme le plug est fait pour minimum spip 3.0.5, possible que cela posera des problèmes chez des utilisateurs...
    Sinon, le dire dans la doc de ton plug et de l’article d’érational concernant la configuration de Sparkpost ?
    Franck

    • Il existe une syntaxe dans paquet.xml qui permet d’ajouter des balises interprétées uniquement pour certaines versions de SPIP.

    • Ouiii, j’y pensais plus, merci Maieul :-)
      Cela dit, c’est pas forcément une bonne solution non plus, car en faite, spip 3.0 et 3.1 demande minimum php 5.1 quand à spip 3.2 c’est php 5.4, ce qui fait que, je ne peux pas me servir de cette astuce :-(
      Donc, soit, on touche à rien dans paquet.xml et c’est dans la doc du plug qu’il faut le dire, soit faut rendre le plug compatible pour php 5.4 minimum via un necessite.
      Je vais attendre la réponde de Cédric par principe, mais je pense que le mieux, c’est simplement de mettre à jour la doc :-)

    • Hello, :-)
      Cerdric, je me suis permis de mettre à jour la doc https://contrib.spip.net/Mailshot?var_mode=calcul#nh2
      A savoir que sparkpost va faire des modifs dans sont api à partir de novembre :-(
      https://www.sparkpost.com/blog/upcoming-api-transmission-endpoint-changes/

    Reply to this message

  • 1

    Bonjour à tous,
    J’utilise depuis quelques mois mailshot, en combinaison avec Newsletter et MailSubscribers + le service SparkPost pour l’envoi.
    Suite à une récente mise à jour, SPIP + tous mes plugins, mes Newsletters ne partent plus.
    Les tests fonctionnent, mais pas l’envoi vers les listes.
    En analysant les logs de SPIP, cela semble dû à l’erreur suivante :
    Au moment de l’envoi, Mailshot cherche à écrire en base la Newsletter et l’erreur “mysql: Unknown column ’from_name’ in ’field list’” apparaît à ce moment-là.

    Il semblerait qu’il y ait 2 nouveaux champs dans la table Mailshots, et que ma méthode de mise à jour de plugin (simple remplacement de fichiers en FTP) n’ait pas créé ces champs.

    Que faire ? Désinstaller, puis ré-installer le plugin ? J’ai peur de perdre des données (mes anciennes Newsletters entre autres).
    Merci !

    • Bon,
      Via PhpMyAdmin, j’ai modifié la structure de la table _mailshots, en rajoutant les 2 champs (après le champ listes) :
      from_name , text (type), utf8_general_ci (interclassement)
      from_email, text (type), utf8_general_ci (interclassement)

      Et depuis, tout est rentré dans l’ordre.
      Il semblerait donc que dans ses versions plus récentes, le plugin Mailshot ait besoin de 2 champs supplémentaires dans la table _mailshots pour fonctionner correctement.

    Reply to this message

  • Régis

    Merci. J’ai configuré Mailshot correctement en cochant « utiliser le même service ... »
    Pour facteur, j’ai mis utiliser les réglages du site, utiliser SMTP, hôte in-v3.mailjet.com, port 587, authentification à « oui », nom utilisateur et mot de passe (clé API et clé secrète) fournis par mailjet comme paramètre SMTP, connexion sécurisée à « non », embarquer les images ...

    J’ai toujours le message « Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau. » en envoyant à 1 destinataire, et « envoi programmé » en envoyant à la liste des abonnés, mais rien n’arrive. Je ne sais que faire ...

    Reply to this message

  • 1

    J’ai envoyé une infolettre par l’intermédiaire de Mailjet en renseignant soigneusement les codes API et pw.
    J’ai bien le message “La newsletter a bien été envoyée à (adresse de reception)”, mais le message n’est pas reçu. Que faire ?

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom