Comment envoyer des emails depuis votre serveur web avec la fonction PHP mail() et PHPMailer

Comment envoyer des emails depuis votre serveur web avec la fonction PHP mail() et PHPMailer

La plupart des entreprises créent un compte de courrier électronique professionnel pour renforcer leur crédibilité et gagner la confiance de leurs clients. Pour ce faire, vous devez acheter un nom de domaine et configurer votre messagerie professionnelle sur un client de messagerie ou un serveur.

Si vous créez votre site ou votre application web avec le langage de programmation PHP, vous pouvez envoyer des courriers électroniques directement à partir de votre serveur web. La fonctionnalité de courrier électronique de PHP vous permet de créer des formulaires de courrier personnalisés et d’envoyer des courriers électroniques textuels de base à plusieurs destinataires.

Il y a deux façons d’envoyer des courriers électroniques en PHP : en utilisant la fonction PHP mail() intégrée ou une bibliothèque d’envoi de courriers électroniques telle que PHPMailer.

Dans cet article, nous aborderons les différences entre PHPMailer et la fonction mail() et nous vous montrerons comment envoyer des emails avec les deux.

Obtenez le glossaire complet du développement web

PHP mail est une fonction qui envoie des emails en utilisant des scripts PHP. La fonction PHP intégrée peut cibler plusieurs destinataires par envoi d’email. Cependant, elle n’est pas adaptée à l’envoi d’emails en masse sans l’utilisation d’un logiciel externe d’envoi d’emails en PHP comme PHPMailer.

PHPMailer vs fonction mail() : avantages et inconvénients

PHP mail permet aux administrateurs de sites web basés sur PHP d’envoyer des courriers électroniques depuis leur serveur web à l’aide de scripts PHP. Il s’agit d’une alternative populaire à l’utilisation d’un service d’hébergement de courrier électronique tiers, car la fonction PHP est intégrée au serveur web.

L’envoi d’emails en PHP est possible via la fonction native PHP mail() ou via un package PHP externe comme PHPMailer. Voici une brève présentation de chaque méthode, avec ses avantages et ses inconvénients :

Fonction PHP mail()

mail() est une fonction PHP qui utilise des scripts PHP pour envoyer des messages électroniques simples. La fonction mail comprend trois paramètres obligatoires : $to, $subject et $message. Les paramètres optionnels à utiliser sont $headers et $parameters. Nous les aborderons plus en détail ultérieurement.

Cette fonction PHP intégrée renvoie une valeur booléenne lors de l’exécution – VRAI si le serveur reçoit avec succès l’e-mail à envoyer ou FAUX en cas d’échec.

Avantages :

  • Préinstallé et prêt à l’emploi, tout ce dont vous avez besoin est d’avoir PHP.
  • Compatible avec les versions antérieures, un changement de version PHP ne cassera pas le script
  • Facile à apprendre.

Inconvénients :

  • Envoi de courriels à l’aide d’une méthode obsolète sans prise en charge intégrée de l’authentification moderne telle que SPF et DKIM.
  • Il atterrit souvent dans les dossiers de spam ou de courrier indésirable en raison de l’absence d’authentification et d’une mauvaise configuration.
  • Nécessite une configuration complexe pour le SMTP, ce qui augmente le risque de déclencher des filtres anti-spam.
  • Impossibilité de traiter efficacement de gros volumes de courriels.
  • Offre des limites d’envoi plus basses et moins de fiabilité que PHPMailer.
  • Renvoie VRAI même si l’e-mail n’atteint pas le destinataire.

Important ! Pour les utilisateurs de  Hostinger, gardez à l’esprit que les limites actuelles pour les emails envoyés via PHP mail() sont de 100/jour et 10/minute. Ces limites seront réinitialisées toutes les 24 heures et seront consommées immédiatement s’il y a des emails en file d’attente.

PHPMailer

PHPMailer est une bibliothèque populaire d’envoi de courrier qui supporte l’envoi de courrier via la fonction mail() ou un serveur SMTP (Simple Mail Transfer Protocol). Elle donne accès à un ensemble de fonctions pour l’envoi de courrier, simplifiant le processus de configuration manuelle du courrier en PHP.

Avantages :

  • Envoi de courriels via une connexion sécurisée avec authentification SPF et DKIM, améliorant ainsi la distribution dans la boîte de réception.
  • Simplifie la configuration du courrier électronique et prend en charge des fonctions avancées telles que les corps HTML et les pièces jointes.
  • Prise en charge du protocole SMTP avec cryptage SSL et TLS intégré.
  • Traite efficacement d’importants volumes de courrier électronique en peu de temps.

Inconvénients :

  • Nécessite une installation manuelle via SSH.
  • Coûts supplémentaires sur le plan d’hébergement Single de Hostinger en raison de l’absence d’accès SSH.
  • La courbe d’apprentissage est plus raide que celle de la fonction mail() intégrée.

Important ! Si vous utilisez PHPMailer avec Titan Mail sur Hostinger, la limite d’envoi est 1000 emails/jour et 300 emails/heure. Pour le service de messagerie d’Hostinger, la limite est plus élevée – jusqu’à 3000 emails/jour sans limite horaire. Vérifiez les paramètres et les limites de chaque service, car ils varient en fonction de votre plan d’hébergement.

Comment utiliser PHPMailer pour envoyer des courriels

Dans cette section, nous allons couvrir les étapes de l’envoi de courrier à l’aide de PHPMailer. Nous recommandons d’utiliser une connexion SMTP authentifiée avec PHPMailer afin d’augmenter la délivrabilité de vos courriels contre les filtres anti-spam.

Installation de PHPMailer

L’installation de PHPMailer est assez simple, surtout si l’on utilise Composer.

Notez que les plans d’hébergement web Premium et Business d’Hostinger ainsi que les options d’hébergement cloud sont préinstallés avec deux versions de Composer.

Utilisez la commande composer pour activer la version 1.10 de Composer. Si vous avez besoin de la nouvelle version 2.0 ou si vous utilisez la version 8.0 de PHP ou une version ultérieure, exécutez la commande composer2.

Important ! Vous devez installer PHPMailer en utilisant Composer via SSH pour qu’il fonctionne correctement. L’ajout d’un fichier phpmailer.php avec du code SMTP, comme nous le verrons plus loin dans ce guide, ne fonctionnera pas sans une installation correcte

.

Suivez ces étapes pour installer PHPMailer manuellement :

  1. Depuis votre tableau de bord hPanel, allez dans Avancé → Accès SSH et notez l’IP SSH, le port, le nom d’utilisateur et le mot de passe sous les détails SSH.
  2. Ouvrez PuTTY et entrez vos informations SSH dans les champs Nom d’hôte (ou adresse IP) et Port. Cliquez ensuite sur Ouvrir.
  3. Lorsqu’une fenêtre de commande apparaît, saisissez votre nom d’utilisateur et votre mot de passe SSH et appuyez sur Entrée. N’oubliez pas que PuTTY n’affiche pas le mot de passe, ne soyez donc pas surpris s’il n’apparaît pas à l’écran.
  4. Exécutez la commande suivante pour accéder au répertoire public_html :
cd public_html
  1. Exécutez la commande suivante pour installer PHPMailer :
composer2 require phpmailer/phpmailer
  1. Attendez un peu que le processus d’installation soit terminé. Voici à quoi cela devrait ressembler :

Lecture suggérée

Apprenez plus de commandes SSH pour vous aider à gérer votre serveur.

Comprendre les composants de PHPMailer

Pour comprendre le fonctionnement de PHPMailer, passons en revue chaque composant du script ci-dessus.

  • use PHPMailer\PHPMailer\PHPMailer; – importe la classe PHPMailer dans l’espace de noms global.
  • require ‘../vendor/autoload.php’; – inclut diverses bibliothèques dont PHPMailer a besoin.
  • $mail = new PHPMailer ; – crée un nouvel objet PHPMailer.
  • $mail->isSMTP() ; – indique à la classe PHPMailer d’utiliser la configuration SMTP personnalisée définie dans le script au lieu du serveur de messagerie local.
  • $mail->SMTPDebug = 2 ; – détecte si quelque chose ne va pas avec la connexion SMTP.
  • $mail->Host = ‘smtp.hostinger.com’ ; – c’est ici que l’adresse du serveur SMTP doit être spécifiée.
  • $mail->Port = 587 ; – définissez le port SMTP ici. Nous choisirons le port SMTP 587 comme port de soumission de courrier par défaut pour tous les types de transmission de données SMTP.
  • $mail->SMTPAuth = true ; – active l’authentification SMTP.
  • $mail->Username = ‘monmail@monnomdedomaine.tld’ ; – spécifiez votre adresse e-mail ici.
  • $mail->Password = ‘My$tr0ngPa55w0rd! ; – entrez votre mot de passe ici.
  • $mail->setFrom(‘monmail@monnomdedomaine.tld’, ‘Votre Nom’) ; – c’est ici que vous insérez l’adresse électronique de l’expéditeur.
  • $mail->addReplyTo(‘monmail@monnomdedomaine.tld’, ‘Votre Nom’) ; – informe le destinataire de l’adresse à laquelle il doit répondre.
  • $mail->addAddress(‘destinataire@domaine.tld’, ‘Nom du destinataire’) ; – insérez l’adresse du destinataire ici.
  • $mail->Subject = ‘Vérification du fonctionnement de PHPMailer’; – ajoutez le sujet de l’email ici.
  • $mail->msgHTML(file_get_contents(‘message.html’), __DIR__) ; – lit un corps de message HTML à partir d’un fichier externe. La fonction file_get_contents() chargera le contenu de message.html, un fichier local situé dans le répertoire public_html, et l’inclura dans le message.
  • $mail->Body = ‘Ceci est un simple corps de texte’ ; – contient le corps du message.
  • //$mail->addAttachment(‘attachment.txt’) ; – si vous souhaitez inclure des pièces jointes, ajoutez les noms des fichiers et supprimez la double barre oblique de cette déclaration.
  • if (!$mail->send()) { – définit ce qui se passe lorsque le script est exécuté.
  • echo ‘Mailer Error:’. $mail->ErrorInfo ; – vous verrez un message d’erreur et les détails de l’erreur si le script ne parvient pas à envoyer le message.
  • else { – prolonge l’instruction if et décrit ce qui se passe si la condition précédente n’est pas remplie.
  • echo ‘Le message e-mail a été envoyé !’ ; – signifie que le processus d’envoi du courrier électronique a réussi.

Conseil de pro

La ligne SMTPDebug = 2; n’est applicable que lorsque vous testez un script et que vous voulez voir comment il fonctionne. N’oubliez pas de la remplacer par SMTPDebug = 0; lorsque vous avez terminé le test afin d’éviter que les destinataires ne reçoivent le rapport de livraison du protocole SMTP.

Utilisation de PHPMailer avec Hostinger SMTP

Après avoir installé PHPMailer, vous pouvez commencer à envoyer des courriers électroniques en PHP. Cette section vous montrera comment envoyer des courriels via le serveur SMTP Hostinger à l’aide de PHPMailer.

Pour ce faire, suivez les étapes ci-dessous :

  1. Créez un compte de messagerie en accédant à hPanel, puis allez à Emails → Comptes email → Créer une boîte mail.
  2. Indiquez la nouvelle adresse électronique et définissez un mot de passe. Cliquez ensuite sur Créer. N’oubliez pas ces informations car vous les utiliserez pour envoyer des courriers via PHPMailer.
  3. Sur la même page, allez dans Configurer les applications et les appareils → Applications recommandées → Paramètres du serveur et notez le port SMTP et le nom d’hôte.
  4. Accédez au tableau de bord hPanel et naviguez vers Fichiers → Gestionnaire de fichiers. Cliquez sur le dossier public_html et sélectionnez Nouveau fichier pour créer un nouveau fichier. Nommez le fichier phpmailer.php et cliquez sur Créer.
  5. Double-cliquez sur le fichier phpmailer.php, puis copiez et collez le code ci-dessous après avoir effectué toutes les modifications nécessaires. Veillez à remplacer monmail@mondomaine.tld et destinataire@domaine.tld par votre domaine existant et My$tr0ngPa55w0rd ! par le mot de passe de votre compte de messagerie.
<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'monmail@mondomaine.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('monmail@mondomaine.tld', 'Votre Nom');
$mail->addReplyTo('monmail@mondomaine.tld', 'Votre Nom');
$mail->addAddress('destinataire@domaine.tld', 'Nom du destinataire');
$mail->Subject = 'Checking if PHPMailer works';
$mail->msgHTML(file_get_contents('message.html'), __DIR__);
$mail->Body = 'Vérifier que PHPMailer fonctionne';
//$mail->addAttachment('attachment.txt');
if (!$mail->send()) {
echo 'Mailer Error:'. $mail->ErrorInfo;
} else {
echo 'Le message e-mail a été envoyé.';
}
?>
  1. Après avoir modifié le code, cliquez sur Enregistrer et fermer. Pour exécuter le script, entrez votredomaine.tld/phpmailer.php dans votre navigateur web.

Configuration de Titan SMTP

Si vous utilisez Titan Mail, connectez-vous via le port 465 (SSL) ou 587 (STARTTLS). Visitez Emails → Configurer l’application de bureau pour voir les détails de configuration de votre compte email. Vous pouvez également consulter le tutoriel officiel de Titan pour obtenir les paramètres SMTP, IMAP ou POP corrects.

Création d’un formulaire de contact PHPMailer

Outre l’envoi de courrier simple en PHP, PHPMailer permet aux utilisateurs de créer divers formulaires de contact, tels que des enquêtes de satisfaction.

Comme pour les scripts PHP précédents, créez un nouveau fichier PHP dans le dossier public_html et nommez-le formscript.php. Copiez et collez le script ci-dessous dans le nouveau fichier et modifiez les valeurs en conséquence :

<?php
use PHPMailer\PHPMailer\PHPMailer;
$msg = '';
if (array_key_exists('email', $_POST)) {
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Username = 'monmail@mondomaine.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('monmail@mondomaine.tld', 'Mr. Snuffles');
$mail->addAddress('destinataire@domaine.tld', 'Nom du destinataire');
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(false);
$mail->Body = <<<EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
if (!$mail->send()) {
$msg = 'Sorry, something went wrong. Please try again later.';
} else {
$msg = 'Message sent! Thanks for contacting us.';
}
} else {
$msg = 'Share it with us!';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact form</title>
</head>
<body>
<h1>Contact us</h1>
<?php if (!empty($msg)) {
echo "<h2>$msg</h2>";
} ?>
<form method="POST">
<label for="name">Name: <input type="text" name="name" id="name"></label><br>
<label for="email">Email address: <input type="email" name="email" id="email"></label><br>
<label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
<input type="submit" value="Send">
</form>
</body>
</html>

Conseil de pro

Prendre l’entrée de l’utilisateur dans $_POST et l’utiliser sans aseptisation n’est pas sûr en raison des attaques cross-site scripting (XSS). Pour éviter cela, consultez les meilleures pratiques pour l’assainissement des variables PHP.

Enregistrez vos modifications et exécutez le script à partir de votre navigateur.

Voici à quoi ressemblera le résultat :

Si un visiteur envoie un message via le formulaire, il recevra une confirmation. Le contenu du formulaire sera envoyé à l’adresse électronique que vous avez indiquée ici :

$mail-&gt;addAddress('destinataire@domaine.tld', 'Nom du destinataire');

Conseil de pro

Si le formulaire de contact de PHPMailer ne fonctionne pas, remplacez la ligne $mail->SMTPDebug = 0; par $mail->SMTPDebug = 2 pour identifier la cause. N’oubliez pas de supprimer la ligne ou de changer le 2 en 0 après

.

Visitez le dépôt officiel de PHPMailer sur GitHub pour découvrir d’autres exemples d’utilisation de cette bibliothèque d’envoi de courrier.

Si vous utilisez WordPress, vous pouvez rationaliser le processus de création de de formulaires en utilisant un plugin de formulaire de contact tel que Formidable Forms, Contact Form 7 ou WPForms.

Comment envoyer des courriels à l’aide de la fonction PHP mail()

Une autre méthode pour envoyer des courriels directement depuis PHP est la fonction intégrée mail(). Pour utiliser cette fonction, les utilisateurs qui hébergent leur application ou leur site PHP sur un serveur local doivent configurer un programme Sendmail en modifiant le fichier php.ini dans leur dossier d’installation PHP.

Si vous utilisez un serveur d’hébergement, Sendmail est généralement déjà préconfiguré. Toutefois, vous devez vous assurer que votre hébergeur vous permet de gérer manuellement l’option de service Sendmail.

Par défaut, le service Sendmail est déjà activé. Néanmoins, vérifiez à nouveau pour vous en assurer.

Important ! Titan Mail active la fonction PHP mail() par défaut. Vous ne pouvez donc pas l’activer ou la désactiver dans hPanel

.

Comprendre les composants du courrier électronique en PHP

Pour vous aider à comprendre la fonction PHP mail(), nous allons passer en revue les composants du script PHP utilisé dans la section précédente.

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

Les deux premières lignes ci-dessus activent le rapport d’erreur pour vous informer si le script PHP n’a pas réussi à s’exécuter.

$from = "monmail@mondomaine.tld";

Cette ligne contient l’adresse électronique de l’expéditeur. La plupart des hébergeurs interdisent d’ajouter des adresses e-mail aléatoires à cet endroit en raison du risque de spoofing. Par conséquent, il est préférable d’utiliser une adresse avec votre nom de domaine pour exécuter le script avec succès.

$to = "destinataire@domaine.tld";

L’adresse électronique du destinataire est indiquée ici. Séparez les adresses électroniques par des virgules si vous souhaitez envoyer plusieurs courriels.

$subject = "Test du mail PHP";

Saisissez l’objet du courriel ici.

$message = "Le mail PHP fonctionne correctement";

Saisissez ici le corps de votre message électronique.

$headers = "From :" . $from ;

Cette ligne comprend généralement des en-têtes supplémentaires tels que From, Reply-To et Cc. Vous pouvez les séparer avec le CRLF.

if (mail ($to,$subject,$message,$headers))

Ce script exécute la fonction mail() et vérifie si elle s’est exécutée correctement.

echo "Le message email a été envoyé.";

Le message ci-dessus apparaît si la fonction mail() est exécutée avec succès.

echo "Le message email n'a pas été envoyé.";

Sinon, vous verrez ce message si la fonction mail() échoue.

Bien que les en-têtes supplémentaires soient facultatifs, il est essentiel d’inclure l’en-tête From lors de l’envoi de courrier. Dans le cas contraire, vous recevrez une notification de ce type :

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.

Pour plus d’informations sur la fonction Sendmail et ses paramètres, reportez-vous à la documentation officielle de PHP.

Création d’un fichier de test pour PHP mail

Après avoir vérifié que Sendmail est actif, créez un fichier mail PHP dans le répertoire public_html.

Voici comment procéder :

  1. Depuis hPanel, naviguez vers Fichiers Gestionnaire de fichiers pour accéder au gestionnaire de fichiers d’Hostinger.
  2. Double-cliquez sur le dossier public_html et sélectionnez l’icône Nouveau fichier en haut. Nommez ce nouveau fichier testmail.php et cliquez sur Créer.
  3. Double-cliquez sur testmail.php pour le modifier. Vous pouvez utiliser le code PHP de base ci-dessous, mais modifiez les paramètres en conséquence. Nous décrirons les composants du script plus en détail dans la sous-section suivante :
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "monmail@mondomaine.tld";
$to = "destinataire@domaine.tld";
$subject = "Test du mail PHP";
$message = "Le mail PHP fonctionne parfaitement";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "Le message e-mail a été envoyé.";
} else {
echo "Le message e-mail n'a pas pu être envoyé.";
}
?>
  1. Cliquez sur Enregistrer et fermer une fois que vous avez terminé.
  2. Envoyez le courrier électronique en accédant à votredomaine/testmail.php à partir de votre navigateur web. N’oubliez pas de remplacer “votredomaine” par le domaine utilisé lors de la création de testmail.php.

Envoi d’e-mails HTML avec PHP

La fonction PHP mail() permet également d’envoyer des messages électroniques au format HTML. Ce format est hautement personnalisable par rapport à un message en texte simple.

La procédure d’envoi d’un courrier HTML est la même, mais vous devez cette fois inclure un message HTML et des en-têtes de paramètres supplémentaires.

Voici un exemple de script de base pour l’envoi d’un courrier électronique au format HTML :

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "monmail@mondomaine.tld";
$to = "destinataire@domaine.tld";
$subject = "Test du mail PHP";
$message = "
<html>
<head>
<title>Ceci est un e-mail de test en HTML</title>
</head>
<body>
<p>Salut, c'est un e-mail de test. Merci de l'ignorer.</p>
</body>
</html>
";
// L'en-tête Content-type doit être défini lors de l'envoi d'un e-mail HTML
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "Le message a été envoyé.";
} else {
echo "Le message n'a pas pu être envoyé.";
}
?>

Comment résoudre les erreurs courantes de PHP mail et PHPMailer ?

Dans la section suivante, nous allons passer en revue certains des problèmes les plus courants lors de l’utilisation de la fonction PHP mail() ou de PHPMailer et comment les résoudre.

Adresse de l’expéditeur rejetée : n’appartient pas à l’utilisateur

Cette erreur signifie que le serveur n’a pas pu authentifier l’expéditeur à l’aide des informations fournies. Pour résoudre ce problème, vérifiez l’adresse électronique que vous avez utilisée pour envoyer le message et assurez-vous qu’elle correspond à une adresse existante.

Assurez-vous également que votre Sender Policy Framework (SPF) est activé. Si vous utilisez Hostinger, vérifiez votre enregistrement SPF en allant sur hPanel et en naviguant vers EmailsComptes email Paramètres DNSGérer la distribution des e-mails.

Si l’enregistrement SPF est activé, il sera indiqué comme actif.

Gmail n’a pas pu vérifier que domaine.tld a envoyé ce message

Si cet avertissement apparaît lors du test d’un script de courrier électronique en PHP, la cause peut être l’une des suivantes :

  • Il n’y a pas d’enregistrement SPF dans la zone DNS du domaine – si l’enregistrement est manquant ou si vous utilisez des serveurs de noms externes, ajoutez manuellement un nouvel enregistrement SPF TXT via hPanel ou cPanel.
  • Vous avez utilisé des détails d’authentification SMTP invalides – assurez-vous d’utiliser une adresse e-mail existante qui vous appartient.

Le courrier est envoyé dans le dossier spam

Il y a plusieurs raisons pour lesquelles le courrier PHP peut déclencher des filtres anti-spam. Les causes les plus courantes sont les suivantes :

  • Objet trompeur ou de type spam – cela se produit généralement lorsque l’on utilise des termes tels que “test” ou “urgent”. Veillez à définir clairement votre intention dans la ligne Objet.
  • Adresse d’expéditeur incorrecte – l’ajout d’une adresse erronée peut déclencher des mesures de sécurité destinées à filtrer votre courrier électronique afin d’éviter les usurpations d’identité et les escroqueries.
  • Utilisation de mots déclencheurs de spam – supprimez de votre message les mots spammy tels que “une offre formidable” et “ceci n’est pas du spam” afin d’accroître la crédibilité de votre e-mail.
  • Votre liste de diffusion ne comporte pas de lien de désabonnement – veillez à inclure un bouton de désabonnement pour éviter ce problème et renforcer la confiance des lecteurs.

Impossible de se connecter à l’hôte SMTP

Les nouvelles versions de PHP ont généralement un comportement SSL plus strict. Si la fonction PHP mail() ne s’exécute pas après la mise à jour de votre PHP vers la dernière version, cela peut en être la cause.

L’utilisation de PHPMailer avec certains hébergeurs déclenche également cette erreur de code.

Par exemple, selon le wiki PHPMailer, GoDaddy bloque les connexions SMTP sortantes via les ports 25, 465 et 587 vers des serveurs tiers tels que Gmail et Hotmail, à l’exception de ses propres serveurs. En outre, il ne prend pas en charge l’intégration avec des serveurs SMTP tiers.

Utilisez le script suivant pour résoudre cette erreur :

$mail->SMTPOptions = array( 
'ssl' => array( 
'verify_peer' => false, 
'verify_peer_name' => false, 
'allow_self_signed' => true 
) 
);

Important ! Evitez d’implémenter ces changements globalement dans php.ini, car cela permet des connexions non sécurisées, un problème de sécurité que PHP a résolu depuis la version 5.6.

Comme Hostinger SMTP n’a pas ce problème, envisagez de migrer vers notre service de messagerie professionnelle pour une meilleure expérience d’envoi.

Conclusion

Vous pouvez envoyer des courriels avec PHP en utilisant la fonction mail() ou une bibliothèque d’envoi de courriels comme PHPMailer. La première est adaptée à l’envoi de petits volumes de messages textuels simples, tandis que la seconde est plus adaptée à l’envoi d’e-mails en masse ou à la création de formulaires de contact.

Vous pouvez exploiter la fonction de messagerie intégrée de PHP en créant un nouveau fichier PHP dans le répertoire public_html et en exécutant le script à l’aide de votre navigateur web.

En revanche, l’envoi d’e-mails avec PHPMailer nécessite l’installation de la bibliothèque de code via Composer, la création d’un compte e-mail et la configuration des paramètres SMTP de votre hébergement.

Dans ce tutoriel, nous avons abordé l’installation de PHPMailer, la création d’un script de test et la mise en place d’un simple formulaire de contact. Nous avons également abordé l’envoi d’e-mails avec la fonction PHP mail() et la résolution des erreurs courantes au cours du processus d’envoi d’e-mails.

Nous espérons que ce tutoriel vous a été utile. Si vous avez d’autres questions, laissez-les dans la section des commentaires ci-dessous.

PHP Mail – FAQ

Puis-je envoyer des e-mails depuis PHPMailer vers Gmail ou d’autres services de messagerie ?

Cela dépend de votre fournisseur d’hébergement. Avec GoDaddy, vous ne pouvez pas envoyer de courrier à des boîtes de réception qui utilisent les protocoles d’authentification SPF et DKIM comme Gmail, Yahoo et Hotmail. Cependant, ce problème ne persiste pas avec Hostinger. Contactez votre hébergeur pour clarifier ses paramètres SMTP et savoir s’il prend en charge PHPMailer avec des serveurs SMTP tiers.

Comment puis-je valider les adresses e-mail avant d’utiliser la fonction PHP mail() ou PHPMailer pour envoyer des e-mails ?

Vous pouvez utiliser la fonction filter_var() et transmettre l’adresse électronique au filtre FILTER_VALIDATE_EMAIL. Ce filtre vérifiera la validité de l’adresse électronique, en s’assurant qu’elle ne contient pas de caractères non pris en charge ou d’espaces blancs.

Author
L'auteur

Ismail

Ismail est un spécialiste du référencement et de la localisation chez Hostinger. Il est passionné par la technologie et le développement web et possède des années d'expérience dans le domaine informatique. Ses passe-temps incluent les jeux vidéo et le football.