Configurer un SMTP sur WordPress sans plugin

27 mars 2018 camillejg 9 commentaires

Depuis que les grands fournisseurs d’adresse emails ont durci les règles sur la réception des emails, la configuration d’un SMTP est devenu incontournable sur tous les sites Internet qui font de l’envoi transactionnel ou commercial. D’une part pour sécuriser les envois, et d’autre part pour s’approcher d’un taux de réception des emails proche de 100%.

Sur WordPress, de nombreux plugins permettent d’effectuer cette configuration de manière assez simple. Mais la solution technique est elle aussi très simple et rapide à mettre en place, et permet d’éviter l’installation d’un plugin supplémentaire sur votre site.

Pour ce faire, WordPress propose la fonction phpmailer_init(), qui se configure ainsi:

add_action( 'phpmailer_init', 'my_phpmailer_configuration' );
function my_phpmailer_configuration( $phpmailer ) {
    $phpmailer->isSMTP();     
    $phpmailer->Host = 'smtp.exemple.com';
    $phpmailer->SMTPAuth = true; // Indispensable pour forcer l'authentification
    $phpmailer->Port = 465;
    $phpmailer->Username = 'utilisateur';
    $phpmailer->Password = 'motdepasse';

    // Configurations complémentaires
    //$phpmailer->SMTPSecure = "ssl"; // Sécurisation du serveur SMTP : ssl ou tls
    //$phpmailer->From = "[email protected]"; // Adresse email d'envoi des mails
    //$phpmailer->FromName = "Nom Exemple"; // Nom affiché lors de l'envoi du mail
}

Ce code est à ajouter dans le fichier functions.php de votre thème WordPress.

Quel service SMTP choisir ?

Vous ne savez quel service SMTP choisir, voici une liste non-exhaustive de quelques services performants et avec lesquels j’ai pu travailler sur mes différents projets :


9 commentaires

  1. Pascal dit :

    Bonjour et merci pour votre article très clair et facile à mettre en place.
    Je cherche à ajouter une ligne de code pour ajouter l’email de réponse.
    Auriez-vous la possibilité de me donner l’info ?
    Je vous en remercie par avance.
    Bien cordialement
    Pascal

  2. Pascal CAMLITI dit :

    Bonjour,

    Est-ce que cette fonction doit être ajoutée pour toutes les boites emails du site ou simplement la principale du webmaster ?
    A vous lire,

    • camillejg dit :

      Bonjour Pascal,

      Il faut y mettre l’adresse qui sera censée recevoir les emails de réponse. Donc celle du webmaster si c’est cette personne, sinon les adresses des personnes concernées.

      Bonne continuation !
      Camille

  3. Thomas dit :

    Merci pour cette infos qui m’a aidé

  4. Bonjour, merci pour cet article. J’ai copié et ajouter le code dans le fichier functions.php de mon thème en paramétrant l’adresse smtp,le login et le mdp. J’ai aussi enlever les 2/ avant les lignes :
    //$phpmailer->From = « [email protected] »; // Adresse email
    //$phpmailer->FromName = « Nom Exemple »; // Nom affiché
    Mais la fonction ne marche pas… auriez-vous un conseil à me donner?
    Merci d’avance, Pascal

  5. Jdg dit :

    Bonjour et merci pour ce tutoriel.
    Je voulais savoir s’il existe un code php pour définir une limite s’envoie par heure ou jour ?
    Merci d’avance

    • camillejg dit :

      Bonjour,

      Si vous souhaitez limiter le nombre d’envoi de mails depuis votre site, le mieux serait peut-être d’utiliser une configuration stockée dans wp_option, par exemple « daily_max_send », puis une variable de comptage (par ex : daily_sended ») remise à zéro à minuit via une tâche cron.
      Mais cela aura pour effet de ne plus autoriser l’envoi du tout une fois la limite atteinte.

      Camille

Articles associés