L’email joue un rôle essentiel sur les sites web, notamment pour la réinitialisation des mots de passe et le traitement des demandes des clients. La fonction mail() de PHP permet d’envoyer des messages simples, mais ceux-ci n’arrivent pas toujours dans les boîtes de réception. Elle ne propose pas non plus certaines fonctionnalités dont les entreprises ont besoin.
PHPMailer remédie à ces problèmes grâce à l’authentification SMTP, au chiffrement, à la mise en forme HTML et à la prise en charge des pièces jointes. Vos messages bénéficient ainsi d’une présentation professionnelle et ont davantage de chances de parvenir à leurs destinataires.
Pour tirer pleinement parti de PHPMailer, vous devez savoir comment :
- Installer la bibliothèque avec Composer ou manuellement
- Configurer les paramètres SMTP pour assurer un envoi fiable des emails
- Utiliser les principaux composants de PHPMailer, comme setFrom(), addAddress() et Body
- Créer un formulaire de contact fonctionnel avec validation des données
- Connecter PHPMailer à Gmail et à d’autres fournisseurs
- Résoudre les erreurs courantes, notamment les échecs de connexion SMTP et les problèmes d’authentification DNS
Qu’est-ce que PHPMailer ?
PHPMailer est une bibliothèque PHP qui permet d’envoyer facilement des emails directement depuis votre serveur web. Contrairement à la fonction native mail() de PHP, elle propose des fonctionnalités avancées telles que :
- L’authentification SMTP et le chiffrement (SSL ou TLS)
- Les emails au format HTML et leurs versions alternatives en texte brut
- Les pièces jointes et les images intégrées
- Les en-têtes personnalisés et les adresses de réponse
Grâce à ces fonctionnalités, PHPMailer est une solution privilégiée par les développeurs qui souhaitent gérer les emails de leurs applications de manière sécurisée et professionnelle.
PHPMailer est-il préférable à la fonction mail() ?
Oui, PHPMailer est préférable à la fonction mail() dans la plupart des cas d’utilisation. Voici ses principaux avantages :
- Fiabilité. PHPMailer utilise le protocole SMTP, ce qui réduit le risque que les emails se retrouvent dans le dossier spam.
- Sécurité. La bibliothèque prend en charge des protocoles de sécurité modernes comme TLS.
- Flexibilité. Elle permet d’ajouter des pièces jointes, de mettre en forme les messages en HTML et de définir des en-têtes avancés.
- Compatibilité. PHPMailer est largement utilisé et régulièrement mis à jour pour rester compatible avec les nouvelles versions de PHP.
Si vous développez un projet qui va au-delà d’un script très simple, PHPMailer offre davantage de contrôle et un fonctionnement plus prévisible que la fonction mail().
Comment utiliser PHPMailer pour envoyer des emails
Voici les principales étapes pour envoyer des emails avec PHPMailer :
- Téléchargez et installez PHPMailer avec Composer ou depuis GitHub.
- Chargez la bibliothèque dans votre script PHP à l’aide d’un chargeur automatique de classes ou manuellement.
- Créez une nouvelle instance de PHPMailer.
- Configurez les paramètres SMTP (serveur, port, nom d’utilisateur et mot de passe).
- Définissez les informations de l’email, notamment l’expéditeur, le destinataire, l’objet et le corps du message.
- Envoyez l’email et gérez les éventuelles erreurs.
Voici un exemple simple :
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Configuration SMTP
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'your@email.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Paramètres de l'email
$mail->setFrom('your@email.com', 'Your Name');
$mail->addAddress('recipient@domain.com');
$mail->Subject = 'Test Email';
$mail->Body = 'This is a test email sent using PHPMailer.';
$mail->send();
echo 'Message envoyé';
} catch (Exception $e) {
echo "Erreur : {$mail->ErrorInfo}";
}Installez PHPMailer
Le moyen le plus simple d’installer PHPMailer est d’utiliser Composer, le gestionnaire de dépendances PHP. Exécutez la commande suivante dans le répertoire racine de votre projet :
composer require phpmailer/phpmailer
Une fois l’installation terminée, vous trouverez PHPMailer dans le dossier vendor/ de votre projet, comme le montre l’arborescence suivante :
/your-project
/vendor
/phpmailer
/phpmailerPour utiliser la bibliothèque, chargez le fichier de chargement automatique des classes de Composer au début de votre script PHP :
require 'vendor/autoload.php';
Si vous n’utilisez pas Composer, vous pouvez également télécharger PHPMailer depuis GitHub. Placez alors le dossier PHPMailer dans votre projet, puis incluez manuellement les fichiers nécessaires :
require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; require 'PHPMailer/src/Exception.php';
L’utilisation de Composer est vivement recommandée aux débutants, car cet outil gère les dépendances et facilite les mises à jour.
Comprendre les composants de PHPMailer
PHPMailer propose de nombreuses méthodes et propriétés pour créer des emails professionnels. Voici les plus importantes, accompagnées de courts exemples que vous pouvez réutiliser :
- setFrom() – définit l’adresse email et le nom de l’expéditeur.
$mail->setFrom('no-reply@domain.com', 'Website Name');- addAddress() – ajoute un ou plusieurs destinataires.
$mail->addAddress('user@example.com', 'John Doe');
$mail->addAddress('admin@example.com'); // Plusieurs destinataires- addReplyTo() – définit l’adresse email à laquelle les réponses doivent être envoyées. Cette méthode est particulièrement utile pour les formulaires de contact.
$mail->addReplyTo('support@domain.com', 'Support Team');- Subject – définit l’objet de l’email.
$mail->Subject = 'Order Confirmation';
- Body – contient le corps du message, au format HTML ou en texte brut.
$mail->Body = '<h1>Thank you!</h1><p>Your order has been received.</p>';
- AltBody – définit une version alternative en texte brut pour les clients de messagerie qui ne prennent pas en charge le HTML.
$mail->AltBody = 'Thank you! Your order has been received.';
- addAttachment() – permet de joindre des fichiers à l’email.
$mail->addAttachment('/path/to/invoice.pdf', 'Invoice.pdf');Ces méthodes et propriétés vous donnent un contrôle total sur la présentation et le fonctionnement de vos emails, tout en rendant leur envoi plus fiable qu’avec la fonction native mail() de PHP.
Utiliser PHPMailer avec le serveur SMTP d’Hostinger
La plupart des hébergeurs, dont Hostinger, permettent d’envoyer des emails via leurs serveurs SMTP. Cette méthode est recommandée, car elle améliore la délivrabilité des emails et réduit le risque qu’ils soient considérés comme du spam.
Pour configurer PHPMailer avec le serveur SMTP d’Hostinger, vous aurez besoin des informations suivantes :
- Serveur SMTP : smtp.hostinger.com
- Port : 587 (TLS) ou 465 (SSL)
- Nom d’utilisateur : votre adresse email complète (par exemple, yourname@yourdomain.com)
- Mot de passe : celui de votre compte email
Voici un exemple de configuration :
$mail->isSMTP(); $mail->Host = 'smtp.hostinger.com'; $mail->SMTPAuth = true; $mail->Username = 'your@hostinger.com'; $mail->Password = 'password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // ou ENCRYPTION_SMTPS pour le port 465 $mail->Port = 587;
🔑 Conseils pour les débutants :
- Vérifiez que vous avez déjà créé un compte email depuis le tableau de bord Hostinger → Emails → Gérer → Créer un nouveau compte.
- Le mot de passe SMTP est celui que vous avez défini lors de la création du compte email, et non votre mot de passe de connexion à Hostinger.
- Commencez par tester vos identifiants dans Webmail. Si vous parvenez à vous connecter, ils devraient également fonctionner avec PHPMailer.
Une fois la configuration terminée, PHPMailer utilisera les serveurs d’Hostinger pour envoyer vos emails en toute sécurité.
Créez un formulaire de contact avec PHPMailer
PHPMailer est souvent utilisé pour envoyer les messages transmis via des formulaires de contact. Pour mettre en place cette fonctionnalité, vous aurez besoin d’un formulaire HTML sur votre page et d’un script PHP qui s’appuie sur PHPMailer pour envoyer le message.
Étape 1. Ajoutez un formulaire HTML simple
Ce formulaire permet de recueillir le nom, l’email et le message du visiteur. Enregistrez-le sous le nom index.html ou intégrez-le directement à votre page web :
<form method="POST" action="/contact.php">
<label for="name">Nom</label>
<input id="name" name="name" type="text" required>
<label for="email">Email</label>
<input id="email" name="email" type="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" rows="6" required></textarea>
<button type="submit">Envoyer</button>
</form>Étape 2. Traitez la requête POST avec PHPMailer
Une fois le formulaire prêt, créez un script PHP (contact.php) pour traiter les données soumises et envoyer le message avec PHPMailer. Ce script récupère les données du formulaire, les nettoie, puis les transmet à votre adresse email :
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Validation et nettoyage de base des données
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
exit('Adresse email invalide.');
}
// Échappement des données utilisateur avant leur insertion dans le HTML
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
$safeEmail = htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
$safeMessage = nl2br(htmlspecialchars($message, ENT_QUOTES, 'UTF-8'));
$mail = new PHPMailer(true);
try {
// Configuration SMTP
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->SMTPAuth = true;
$mail->Username = 'your@hostinger.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 587
$mail->Port = 587;
// Contenu de l'email
$mail->setFrom('your@hostinger.com', 'Website Contact');
$mail->addAddress('your@hostinger.com', 'Inbox');
$mail->addReplyTo($email, $name);
$mail->Subject = 'New contact form submission';
$mail->isHTML(true);
$mail->Body = "<p><strong>Nom :</strong> {$safeName}</p>
<p><strong>Email :</strong> {$safeEmail}</p>
<p><strong>Message :</strong><br>{$safeMessage}</p>";
$mail->AltBody = "Nom : {$name}\nEmail : {$email}\nMessage :\n{$message}";
// Pièce jointe facultative
// if (!empty($_FILES['attachment']['tmp_name'])) {
// $mail->addAttachment($_FILES['attachment']['tmp_name'], $_FILES['attachment']['name']);
// }
$mail->send();
echo 'Message envoyé avec succès.';
} catch (Exception $e) {
echo 'Erreur : ' . $mail->ErrorInfo;
}
}Conseils utiles :
- Validez les données saisies côté client et côté serveur pour limiter le spam et les abus.
- Utilisez une adresse email associée à votre nom de domaine comme adresse d’expédition (From). Avec addReplyTo(), indiquez l’adresse email du visiteur comme adresse de réponse pour que les réponses lui soient envoyées.
- Envisagez d’ajouter un champ « honeypot » ou un CAPTCHA pour limiter les envois automatisés par des robots.
Comment résoudre les erreurs courantes de PHPMailer
PHPMailer fournit des messages d’erreur détaillés. Voici quelques-unes des erreurs les plus courantes et leurs causes possibles.
Could not connect to SMTP host
Cette erreur indique généralement que l’adresse du serveur SMTP ou le numéro de port est incorrect. Plusieurs causes sont possibles :
- Nom de serveur incorrect. Vérifiez les paramètres SMTP fournis par votre hébergeur. Chez Hostinger, par exemple, le serveur est généralement smtp.hostinger.com.
- Port bloqué. De nombreux serveurs bloquent le port 25. Utilisez plutôt le port 587 (TLS) ou le port 465 (SSL).
- Restrictions du pare-feu. Si vous effectuez des tests en local, notamment avec XAMPP ou WAMP, votre fournisseur d’accès à Internet (FAI) ou votre pare-feu peut bloquer les connexions SMTP sortantes.
👉 En cas de doute, demandez à votre hébergeur quels paramètres SMTP utiliser et vérifiez que les ports nécessaires sont ouverts sur votre réseau.
SMTP connect() failed
Cette erreur peut notamment être liée à un échec de l’authentification. Dans ce cas, PHPMailer parvient à joindre le serveur, mais celui-ci refuse les identifiants fournis. Plusieurs éléments peuvent être en cause :
- Nom d’utilisateur incorrect. Utilisez toujours votre adresse email complète comme nom d’utilisateur SMTP.
- Mot de passe incorrect. Si vous avez récemment changé le mot de passe de votre compte email, mettez-le également à jour dans votre script.
- Méthode de chiffrement inadaptée. Vérifiez que vous utilisez le mode de chiffrement correspondant au port SMTP :
- Port 587 → PHPMailer::ENCRYPTION_STARTTLS
- Port 465 → PHPMailer::ENCRYPTION_SMTPS
👉 Si le problème persiste, essayez de vous connecter à votre compte email depuis le webmail pour vérifier vos identifiants.
Message rejeté en raison de SPF/DKIM/DMARC
Cette erreur signifie que le serveur de messagerie du destinataire a rejeté votre message parce que votre nom de domaine ne dispose pas des enregistrements d’authentification appropriés. Ces enregistrements DNS permettent de vérifier que l’envoi d’emails depuis votre nom de domaine est autorisé :
- SPF (Sender Policy Framework). Indique aux serveurs de messagerie quelles adresses IP ou quels hôtes sont autorisés à envoyer des emails pour votre nom de domaine.
- DKIM (DomainKeys Identified Mail). Ajoute une signature numérique permettant de vérifier que le message n’a pas été modifié.
- DMARC (Domain-based Message Authentication, Reporting & Conformance). Indique aux serveurs de messagerie destinataires comment traiter les messages qui échouent aux vérifications SPF ou DKIM.
👉 Pour résoudre ce problème, connectez-vous à l’interface de votre registraire de noms de domaine ou de votre hébergeur, puis ajoutez les enregistrements DNS nécessaires. La plupart des hébergeurs, dont Hostinger, proposent des guides détaillés pour configurer SPF, DKIM et DMARC.
Sans ces enregistrements, vos emails risquent davantage d’arriver dans le dossier spam ou d’être rejetés.
Peut-on envoyer des emails avec PHPMailer via Gmail ou d’autres services de messagerie ?
Oui. PHPMailer fonctionne avec Gmail, Outlook, Yahoo et la plupart des autres fournisseurs de messagerie. Il suffit de configurer les paramètres SMTP et la méthode d’authentification appropriés. Pour Gmail, par exemple, utilisez les paramètres suivants :
- Serveur SMTP : smtp.gmail.com
- Port : 587 (TLS) ou 465 (SSL)
- Nom d’utilisateur : votre adresse Gmail complète
- Mot de passe : votre mot de passe d’application si vous avez activé la validation en deux étapes
- Dans votre compte Google, accédez à Sécurité → Validation en deux étapes → Mots de passe des applications pour créer un mot de passe d’application, puis saisissez-le dans $mail->Password.
Exemple :
$mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'yourname@gmail.com'; $mail->Password = 'your-app-password'; // Pas votre mot de passe habituel $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;
Certains fournisseurs imposent toutefois des limites d’envoi. De nombreuses messageries gratuites plafonnent le nombre d’emails que vous pouvez envoyer chaque jour. Gmail, par exemple, applique un plafond quotidien relativement bas pour les envois SMTP. Si vous avez besoin d’envoyer davantage d’emails ou d’accélérer leur acheminement, envisagez à l’avenir de recourir à un service d’envoi d’emails dédié. PHPMailer pouvant communiquer avec n’importe quel serveur SMTP, vous pourrez facilement changer de fournisseur par la suite.
Liste de vérification générale :
- Utilisez le port et le mode de chiffrement recommandés par votre fournisseur.
- Authentifiez-vous avec les identifiants appropriés.
- Renseignez le champ From avec une adresse email associée à un nom de domaine que vous contrôlez afin d’améliorer la délivrabilité.
- Configurez les enregistrements SPF, DKIM et DMARC de votre nom de domaine pour renforcer la confiance des serveurs de messagerie qui reçoivent vos emails.
L’email reste-t-il le pilier des services en ligne ?
Absolument. Malgré l’apparition de nouveaux outils de communication, l’email reste le moyen le plus fiable d’envoyer des messages transactionnels, des campagnes marketing et des réponses aux demandes des clients. Pour les entreprises, les solutions de messagerie professionnelle intégrant des fonctionnalités d’automatisation permettent de gagner du temps et de renforcer l’engagement des clients.
Si vous souhaitez aller au-delà de l’envoi manuel d’emails, découvrez l’automatisation du marketing par email pour simplifier la gestion de vos campagnes et vos échanges avec les clients.
Cet article est une version localisée de How to send emails from your web server with PHPMailer, initialement publié en anglais.
Tout le contenu des tutoriels de ce site est soumis aux normes éditoriales et aux valeurs rigoureuses de Hostinger.