Sites et applications

Configurer phpList pour l'envoi d'e-mails et de newsletters

Vérifié le 8 min de lecture SMTP délivrabilité

phpList est un outil pour envoyer des newsletters et des e-mails à des listes d'abonnés. Vous pouvez l'installer en quelques clics depuis Softaculous.

Fraîchement installé, il fonctionne, mais avec la configuration par défaut il envoie avec la fonction mail() de PHP et tout d'un coup. Résultat : les e-mails finissent dans les spams, d'autres serveurs les rejettent ou nos systèmes les bloquent en voyant un volume anormal. Ces trois réglages l'évitent.

Tous se font dans le fichier config/config.php de phpList (dans le dossier de l'installation, généralement lists/config/config.php). Modifiez-le depuis le gestionnaire de fichiers de cPanel. Si une ligne commence par //, elle est désactivée : retirez ces caractères pour l'activer. Si votre config.php ne contient pas l'une des lignes, ajoutez-la à la fin.

1. Envoyer par SMTP authentifié

Envoyer avec l'utilisateur et le mot de passe d'un compte e-mail, plutôt qu'avec la fonction mail de PHP, est la première chose à faire pour que vos envois soient crédibles.

Cherchez ces lignes :

// To use a SMTP server please give your server hostname here, leave it blank to use the standard
// PHP mail() command.
define('PHPMAILERHOST', '');

// if you want to use smtp authentication when sending the email uncomment the following
// two lines and set the username and password to be the correct ones
//$phpmailer_smtpuser = 'smtpuser';
//$phpmailer_smtppassword = 'smtppassword';

Et laissez-les ainsi :

define('PHPMAILERHOST', 'localhost');
$phpmailer_smtpuser = 'boletines@tudominio.com';
$phpmailer_smtppassword = 'contraseña-del-buzon';
  • PHPMAILERHOST : le serveur de messagerie. Comme phpList est sur le même hébergement, mettez localhost.
  • $phpmailer_smtpuser : un compte e-mail du domaine, créé au préalable dans cPanel > Comptes de messagerie.
  • $phpmailer_smtppassword : le mot de passe de ce compte.

Si vous envoyez par l'intermédiaire d'un fournisseur externe, indiquez son serveur dans PHPMAILERHOST et ajoutez son port et son chiffrement avec define('PHPMAILERPORT', 587); et define('PHPMAILER_SECURE', 'tls');.

2. Vérifier SPF et DKIM

Ces enregistrements DNS permettent au serveur qui reçoit l'e-mail de vérifier que le vôtre est autorisé à envoyer au nom du domaine. Nos systèmes les configurent par défaut, mais vérifiez qu'ils sont actifs, surtout si les DNS du domaine sont hors de Hostsuar.

3. Diviser les envois en lots

Par sécurité, nos serveurs limitent le nombre d'e-mails que chaque domaine peut envoyer par heure. La limite par défaut est de 700 e-mails par heure, suffisante pour un usage normal (nous pouvons l'augmenter s'il s'agit d'un usage régulier et non d'envois en masse). Si phpList en envoie davantage d'un coup, ceux qui dépassent la limite échouent.

C'est pourquoi il faut configurer phpList pour qu'il répartisse la campagne en lots horaires jusqu'à la terminer. De plus, envoyer petit à petit améliore la réputation de vos envois.

Cherchez ces lignes :

// define the amount of emails you want to send per period. If 0, batch processing
// is disabled and messages are sent out as fast as possible
define('MAILQUEUE_BATCH_SIZE', 0);

// define the length of one batch processing period, in seconds (3600 is an hour)
define('MAILQUEUE_BATCH_PERIOD', 3600);

// to avoid overloading the server that sends your email, you can add a little delay
// between messages that will spread the load of sending
define('MAILQUEUE_THROTTLE', 0);

Et laissez-les ainsi :

define('MAILQUEUE_BATCH_SIZE', 500);
define('MAILQUEUE_BATCH_PERIOD', 3600);
define('MAILQUEUE_THROTTLE', 0.2);
  • MAILQUEUE_BATCH_SIZE : e-mails par lot. Avec 500, vous laissez de la marge pour le courrier normal du domaine et pour d'autres applications (formulaires du site, boutique…), qui comptent dans la même limite.
  • MAILQUEUE_BATCH_PERIOD : durée de chaque période en secondes. Avec 3600, un lot est envoyé par heure.
  • MAILQUEUE_THROTTLE : pause en secondes entre un e-mail et le suivant. Avec 0,2, l'envoi est moins intense.

Vous pouvez ajuster ces valeurs, à condition que le lot plus le reste du courrier du domaine ne dépasse pas la limite horaire.

Traiter la file d'attente automatiquement

phpList n'envoie que tant que quelqu'un traite la file d'attente. Si vous le faites depuis le panneau de phpList, vous devrez laisser la page ouverte pendant des heures. Mieux vaut créer une tâche programmée dans cPanel > Tâches Cron qui la traite toutes les quelques minutes, par exemple toutes les 15 :

*/15 * * * * php /home/USUARIO/public_html/lists/admin/index.php -p processqueue -c /home/USUARIO/public_html/lists/config/config.php > /dev/null 2>&1

Remplacez USUARIO par votre utilisateur cPanel et ajustez le chemin si phpList n'est pas dans public_html/lists. Pour être exécuté depuis le cron, config.php doit contenir cette ligne active (c'est le cas dans la configuration de référence de phpList) :

$commandline_users = array();

Vous trouverez plus de détails sur les tâches programmées dans comment configurer les tâches cron.

Gardez votre liste de contacts propre

Dans les listes d'une certaine taille, il y a toujours des adresses qui rebondissent : boîtes mail pleines, domaines ou utilisateurs qui n'existent plus. Si les rebonds se répètent, ils font baisser la réputation du reste de vos envois et, en grand nombre, nos systèmes de sécurité peuvent bloquer l'envoi en le jugeant suspect.

Quand vous recevez un rebond, regardez l'erreur. Si l'adresse n'existe pas, supprimez-la de la liste. Une boîte mail pleine est temporaire et il peut suffire d'attendre. Assurez-vous aussi que le lien de désinscription fonctionne.

Pour de gros volumes, un service spécialisé

Notre messagerie est pensée pour l'usage d'une entreprise, avec un flux constant. Les envois en masse sont autre chose : de grandes quantités d'e-mails en peu de temps, qui nécessitent plusieurs serveurs et IP pour répartir la charge sans perdre en réputation. Il existe pour cela des services spécialisés que vous pouvez utiliser avec n'importe quel hébergement, par exemple :

Beaucoup permettent de continuer à utiliser phpList et d'envoyer par leur SMTP : il suffit d'indiquer leurs données à l'étape 1.

Plus d'informations dans problèmes et solutions de l'envoi d'e-mails en masse.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.