Laravel : connecter un serveur SMTP externe pour envoyer des mails

Je vais une nouvelle fois vous parler du framework PHP Laravel, mais il faut dire qu’il y a tellement de choses intéressantes et utiles à voir ! Après plusieurs articles, je me rends compte à chaque fois que je ne suis pas près d’avoir fait le tour à ce rythme ! Tout en sachant qu’à chaque mise à jour de Laravel il y a des nouveautés plus ou moins importantes. Bon, ici, je vais une nouvelle fois me concentrer sur une fonctionnalité que l’on pourrait qualifier, de base. Donc ça ne devrait pas trop bouger dans le temps pour cette partie. Je publie à chaque fois ces articles comme un carnet de notes pour moi, mais je m’adresse aussi à vous qui cherchez une solution. Quand j’ai des commentaires qui me remercient, c’est à chaque fois une grande satisfaction pour moi d’avoir pu aider !

Je vais vous montrer comment utiliser un SMTP externe pour envoyer des mails à partir de d’une application Laravel. Il est bien sur possible d’envoyer des emails directement à partir de votre serveur web, mais c’est encore un autre métier. Il y a tellement de choses à prendre compte dans ce domaine compliqué qu’est l’emailing que pour commencer, il vaut mieux s’appuyer sur une solution externe pour envoyer ses emails à partir de Laravel. En effet, avoir une bonne délivrabilité mail, c’est vraiment un combat … Parfois, c’est presque encore pire que le référencement, c’est dire ! Surtout si vous souhaitez que vos mails arrivent chez les grands fournisseurs tels que Google, Microsoft ou encore Yahoo. Pour les autres, c’est un peu plus facile heureusement, mais ce n’est pas l’objet de cet article. Je pense que j’aurai de nombreuses autres occasions de vous parler de délivrabilité de vos emails.

Utiliser une adresse mail avec un serveur SMTP

Pour ce tutoriel, je vais utiliser une adresse mail gratuite de chez OVH disponible avec votre nom de domaine. Vous pouvez bien évidemment utiliser n’importe quel serveur SMTP si vous en avez un à disposition avec un prestataire sérieux. Il faudra récupérer les informations de connexion du SMTP que vous voulez utiliser et c’est variable d’un fournisseur à l’autre. Vous avez ici une liste des configurations SMTP des principaux fournisseurs d’adresse mail. Si il en manque, n’hésitez pas à me le dire dans les commentaires pour que je rajoute.

Dans un premier temps, il va falloir modifier le fichier de configuration .env pour ajouter les informations de nptre SMTP. Ce sont ces variables que Laravel va automatiquement utiliser pour envoyer un mail de test. Dans mon cas pour OVH j’ai alors mis dans ce fichier .env le contenu suivant :

MAIL_MAILER=smtp
MAIL_HOST=ssl0.ovh.net
MAIL_PORT=587
MAIL_USERNAME=contact@mondomaine.net
MAIL_PASSWORD="SuPer$=MoTdep4ss!"
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=contact@mondomaine.net
MAIL_FROM_NAME="${APP_NAME}"

Envoyer un email de test

Je vais ensuite créer une commande Laravel pour tester l’envoi d’un mail avec cette configuration. Pour cela rien de plus simple la crée avec :

php artisan make:command SendTestEmail

Puis dans m’a commande j’ajoute le contenu suivant pour envoyer un mail très simple avec du contenu texte :

<?php

namespace App\Console\Commands;

use Illuminate\Support\Facades\Mail;
use Illuminate\Console\Command;

class SendTestEmail extends Command
{
    protected $signature = 'test:email';
    protected $description = 'Command description';

    public function handle()
    {
        Mail::send([], [], function ($message) {
            $message->to('test@destinataire.com')
                    ->subject('Mon sujet de email')
                    ->from('contact@mondomaine.net')
                    ->html('<h1>Contenu de l\'email</h1>
                    <p>Ceci est un test d\'envoi d\'email avec Laravel.</p>');
        });
    }
}

Si tout s’est bien passé vous allez alors recevoir rapidement ce mail dans la boite de réception de l’adresse du destinataire que vous avez renseigné. Faites attention aux limites d’envoi selon le SMTP que vous avez choisi. Pour aller plus loin, il vaudra mieux utiliser une solution de mails transactionnels dédiée pour envoyer un plus gros volume de mails et surtout assurer une bonne délivrabilité avec une configuration parfaite du SPF, DKIM et DMARC. Ils vous proposeront aussi une infrastructure qui possède normalement une bonne réputation, car c’est leur métier.

Maintenant, que nous avons vu comment envoyer un mail de test pour vérifier que la connexion entre votre application Laravel et le SMTP se faisait bien, on va pouvoir aller plus loin dans un futur article avec l’utilisation Mailable. Cette classe vous permet de créer différents templates pour vos emails et de pouvoir déclencher proprement l’envoi dans votre code.

Laisser un commentaire