YourTrend
API Email & SMTP Campagnes Automatisations SMS Web push Messagers Boîte de réception unifiée Mail sécurisé Analyse
ENUKRUDEESFRITPLPTHIZH
Se connecter Commencer gratuitement
API & SMTP

Comment configurer le relais SMTP dans Laravel

Réponse courte

Apprenez à configurer le relais SMTP dans Laravel avec une configuration .env étape par étape, des conseils de test et une alternative API transactionnelle.

Qu'est-ce qu'un relais SMTP et pourquoi en utiliser un avec Laravel

Un relais SMTP est un service tiers qui accepte les e-mails sortants de votre application et les transfère aux boîtes de réception des destinataires en votre nom. L'envoi intégré de Laravel basé sur mail() peut techniquement aussi envoyer des e-mails, tout comme une installation locale de Postfix sur votre serveur. Mais cela est généralement signalé comme spam. Rapidement. Cet article explique comment configurer un relais SMTP dans Laravel afin que vos messages transactionnels atteignent réellement la boîte de réception au lieu du dossier de spam.

Le problème est la réputation. Une adresse IP d'hébergement partagé à partir de laquelle des dizaines d'autres applications envoient également n'a aucun historique avec Gmail, Outlook ou Yahoo. Les filtres anti-spam examinent la réputation de l'expéditeur, les enregistrements d'authentification et le volume d'envoi avant de décider si un message atterrit dans la boîte de réception ou dans le dossier de spam. Un fournisseur de relais comme Mailgun, SendGrid ou Postmark a déjà construit cette réputation, et il gère les réessais, le traitement des rebonds et le réchauffement des IP afin que vous n'ayez pas à écrire cette logique vous-même.

Les relais sont préférés aux serveurs de messagerie locaux chaque fois qu'une application envoie quoi que ce soit de transactionnel : réinitialisations de mot de passe, factures, confirmations de commande, liens de vérification d'inscription. Les envois marketing en bénéficient également, mais l'e-mail transactionnel est la seule catégorie où une livraison manquée casse directement un flux utilisateur — personne ne réinitialise son mot de passe deux fois. Si vous voulez une vue d'ensemble sur le placement dans la boîte de réception, ce guide sur les meilleures pratiques de délivrabilité des e-mails couvre le scoring de réputation plus en profondeur.

Prérequis avant de commencer

Avant de toucher à un fichier de configuration, rassemblez une courte liste de choses. Sauter cette étape est la raison la plus courante pour laquelle la configuration prend un après-midi au lieu de dix minutes.

  • Une installation Laravel fonctionnelle (Laravel 8 à 11 utilisent toutes la même structure de configuration de messagerie).
  • Accès au fichier .env du projet, soit localement, soit sur le serveur déployé.
  • Un compte avec un fournisseur de relais SMTP — Mailgun, SendGrid, Postmark, Amazon SES ou un service similaire.
  • Identifiants de relais : hôte SMTP, port, nom d'utilisateur et mot de passe (ou une clé API utilisée comme mot de passe).
  • Un domaine d'envoi vérifié du côté du fournisseur, afin que les e-mails sortants ne soient pas rejetés avant même de partir.

La plupart des fournisseurs affichent ces identifiants directement sur leur tableau de bord sous une section intitulée "SMTP" ou "Intégration." Copiez-les quelque part en sécurité. Vous aurez besoin de chaque champ.

Configuration SMTP de Laravel — Configuration étape par étape

Laravel garde la configuration des mails séparée entre deux fichiers : config/mail.php, qui définit la structure de chaque expéditeur, et .env, qui contient les valeurs réelles. Vous n'avez presque jamais besoin de modifier config/mail.php directement — les valeurs par défaut sont déjà lues à partir des variables d'environnement. Si vous n'avez jamais fait cela auparavant, apprendre à configurer le relais SMTP dans Laravel revient vraiment à remplir les bonnes variables d'environnement dans le bon ordre.

  1. Ouvrez votre .env et définissez MAIL_MAILER=smtp. Cela indique à Laravel d'utiliser le transport SMTP au lieu de log, sendmail, ou d'un pilote API.
  2. Définissez MAIL_HOST à l'adresse du serveur SMTP du relais, par exemple smtp.mailgun.org ou smtp.sendgrid.net.
  3. Définissez MAIL_PORT. Les valeurs courantes sont 587 pour TLS, 465 pour SSL, ou 2525 comme solution de secours lorsque 587 est bloqué.
  4. Définissez MAIL_USERNAME et MAIL_PASSWORD avec les identifiants fournis par votre fournisseur. Pour certains fournisseurs, le "nom d'utilisateur" est littéralement le mot apikey, et le mot de passe est votre véritable clé API.
  5. Définissez MAIL_ENCRYPTION sur tls dans la plupart des cas. Laissez-le vide uniquement si le fournisseur indique explicitement le port 25 sans cryptage.
  6. Définissez MAIL_FROM_ADDRESS et MAIL_FROM_NAME. Cela contrôle l'en-tête "De" par défaut, et ils doivent correspondre à un domaine que vous avez vérifié avec le relais.
  7. Exécutez php artisan config:clear après avoir enregistré. Laravel met en cache la configuration de manière agressive, et des valeurs obsolètes sont la principale raison pour laquelle une nouvelle configuration "ne fonctionne pas" du premier coup.

Voici à quoi ressemble un bloc typique une fois rempli :

VariableValeur d'exempleBut
MAIL_MAILERsmtpSélectionne le pilote de transport
MAIL_HOSTsmtp.mailgun.orgAdresse du serveur relais
MAIL_PORT587Port de connexion
MAIL_ENCRYPTIONtlsCrypte la session SMTP
MAIL_USERNAMEpostmaster@yourdomain.comIdentifiant du compte relais
MAIL_PASSWORDyour-api-keySecret d'authentification du relais

Rien d'exotique ici. C'est principalement du copier-coller, et les erreurs proviennent généralement de combinaisons de ports et de cryptage non correspondantes, pas de fautes de frappe.

Tester votre connexion SMTP Relay dans Laravel

Ne faites jamais confiance à un changement de configuration tant qu'un email réel n'est pas arrivé. Testez-le.

  1. Ouvrez une session Tinker avec php artisan tinker.
  2. Exécutez Mail::raw('Message de test du relais SMTP Laravel', function ($message) { $message->to('you@example.com')->subject('Test SMTP'); });.
  3. Vérifiez votre boîte de réception — et votre dossier spam, juste au cas où — dans une minute ou deux.
  4. Si rien n'arrive, vérifiez storage/logs/laravel.log pour l'erreur SMTP réelle renvoyée par le fournisseur.
  5. Vérifiez le résultat par rapport au tableau de bord de votre fournisseur, qui enregistre généralement chaque envoi tenté avec un statut de livraison.

Deux erreurs apparaissent constamment. Un délai d'attente de connexion signifie généralement que le port est bloqué par votre fournisseur d'hébergement ou par un pare-feu, ce qui est déprimant courant sur les plans VPS bon marché qui bloquent le port sortant 25 par défaut. Un échec d'authentification signifie presque toujours que le nom d'utilisateur et le mot de passe ont été échangés, ou qu'une clé API a été collée avec un espace à la fin. Si vous souhaitez une méthode plus systématique pour vérifier la délivrabilité au-delà d'un seul envoi de test, il existe des outils de test de délivrabilité des e-mails dédiés qui vérifient le score de spam, l'authentification et les indicateurs de contenu en une seule fois.

API d'e-mail transactionnel Laravel — Une alternative à SMTP

SMTP n'est pas la seule option. Chaque fournisseur de relais majeur expose également une API REST, et Laravel dispose de packages de pilotes officiels ou communautaires pour la plupart d'entre eux — Mailgun, SendGrid, Postmark et SES fonctionnent tous de cette manière.

La route API évite complètement la poignée de main SMTP. Au lieu d'ouvrir une connexion socket, de s'authentifier et de diffuser le message ligne par ligne, votre application effectue une seule requête POST HTTPS avec la charge utile de l'e-mail jointe en tant que JSON. Cela est important car un bon nombre d'environnements d'hébergement bloquent ou limitent les ports SMTP, tandis que le port 443 est presque jamais bloqué. L'envoi par API est également généralement plus rapide pour les applications transactionnelles à fort volume, car il n'y a pas de connexion persistante à négocier par message.

La configuration diffère légèrement selon le fournisseur, mais le schéma est cohérent :

  1. Installez le package Laravel du fournisseur via Composer, par exemple composer require symfony/mailgun-mailer symfony/http-client pour Mailgun.
  2. Définissez MAIL_MAILER=mailgun (ou le nom du pilote équivalent) dans .env.
  3. Ajoutez la clé API et le domaine en tant que variables d'environnement, en suivant les clés spécifiques que le pilote attend.
  4. Effacez le cache de configuration et envoyez un message de test de la même manière que vous le feriez avec SMTP.

SMTP a toujours sa place — c'est universel, et cela fonctionne de la même manière, quel que soit le fournisseur, ce qui est pratique si vous changez un jour de relais. Les équipes développant en dehors de Laravel rencontrent le même problème de blocage de port ; le raisonnement dans ce guide de relais SMTP pour les applications Node.js s'applique tout aussi bien conceptuellement, même si le code diffère.

Sécuriser vos identifiants SMTP

Traitez les mots de passe SMTP et les clés API comme des identifiants de base de données de production. Parce que c'est essentiellement ce qu'ils sont.

  • Ne jamais commettre .env dans le contrôle de version. Confirmez qu'il est listé dans .gitignore — c'est par défaut dans Laravel, mais vérifiez à nouveau après toute mise à niveau du framework.
  • Utilisez des identifiants séparés pour la mise en scène et la production. Une clé de mise en scène divulguée ne devrait pas pouvoir envoyer de mails depuis votre domaine de production.
  • Faites tourner les clés API périodiquement, surtout après le départ d'un membre de l'équipe ou la perte d'un ordinateur portable. La plupart des fournisseurs vous permettent de générer une nouvelle clé
et de désactiver l'ancienne sans temps d'arrêt.

Si votre fournisseur prend en charge la liste blanche d'IP, restreignez l'accès aux serveurs qui envoient réellement des mails. Associez cela à un accès avec le moindre privilège dans vos outils cloud et de déploiement afin que seule l'environnement d'application puisse lire les secrets de mail.

Dépannage des problèmes courants de relais SMTP

Même avec tout configuré correctement, la livraison de mails peut encore échouer pour des raisons extérieures à Laravel. Lorsque cela se produit, résolvez le problème de manière systématique :

  • Vérifiez le nom d'hôte, le port, le paramètre de cryptage, le nom d'utilisateur et le mot de passe dans votre fichier d'environnement.
  • Vérifiez si votre fournisseur nécessite un domaine d'expéditeur vérifié ou une adresse From spécifique.
  • Assurez-vous que le trafic SMTP sortant est autorisé par le pare-feu de votre serveur ou votre fournisseur d'hébergement.
  • Inspectez les journaux d'activité du fournisseur pour des messages de rejet, des limites de taux ou des échecs d'authentification.
  • Envoyez un message test depuis Laravel Tinker ou une simple route pour isoler le problème du reste de votre application.

Si les messages sont acceptés mais n'arrivent jamais, le problème peut être la délivrabilité plutôt que la livraison. Dans ce cas, examinez votre configuration SPF, DKIM et DMARC, et confirmez que vos enregistrements DNS correspondent au service SMTP que vous utilisez.

Réflexions finales

Configurer le relais SMTP dans Laravel concerne principalement l'utilisation des bons identifiants, le choix d'un fournisseur fiable et le maintien d'une configuration propre et sécurisée. Une fois que cela fonctionne, vous obtenez une bien meilleure délivrabilité, visibilité et contrôle qu'avec un serveur de mail basique.

Avec un relais solide en place, votre application peut envoyer des mails de manière cohérente en développement, en préproduction et en production sans maux de tête inutiles.

Termes expliqués dans le glossaire: SPF · DKIM · DMARC
Sur cette page ← Tous les articles
Cela a-t-il été utile ?

Un clic. Cela nous dit quoi écrire ensuite.

Pas encore d'évaluations — la vôtre serait la première.

Commentaires

Les commentaires sont lus avant d'apparaître.
  1. Pas encore de commentaires. Commencez la conversation.
Mettez-le en pratique

Commencez à envoyer en quelques minutes

Cette page a été trouvée en recherchant

Vraies requêtes de recherche qui amènent des gens ici — les mises en évidence ouvrent la page correspondante.