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
Sommaire
Qu’est-ce que PHP mail ?
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 :
- 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.
- Ouvrez PuTTY et entrez vos informations SSH dans les champs Nom d’hôte (ou adresse IP) et Port. Cliquez ensuite sur Ouvrir.
- 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.
- Exécutez la commande suivante pour accéder au répertoire public_html :
cd public_html
- Exécutez la commande suivante pour installer PHPMailer :
composer2 require phpmailer/phpmailer
- 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 :
- Créez un compte de messagerie en accédant à hPanel, puis allez à Emails → Comptes email → Créer une boîte mail.
- 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.
- 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.
- 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.
- 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é.'; } ?>
- 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->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 :
- Depuis hPanel, naviguez vers Fichiers → Gestionnaire de fichiers pour accéder au gestionnaire de fichiers d’Hostinger.
- 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.
- 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é."; } ?>
- Cliquez sur Enregistrer et fermer une fois que vous avez terminé.
- 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 Emails → Comptes email→ Paramètres DNS → Gé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.
Commentaires
June 12 2020
Bonjour, je voulais savoir s'il était possible de mettre son adresse mail perso au lieu de mettre l'adresse du domaine car cela ne m'arrange pas trop pour mon site web. Merci d'avance.
June 16 2020
Bonjour Sammy! Oui, vous pouvez utiliser une adresse e-mail différente dans le champ $from, mais notez que votre mail pourrait finir dans le dossier spam.
November 13 2020
Bonjour, A chaque envoi de mel par script qui comporte en général une petite dizaine de destinataires, le service sendmail se désactive. A partir de quelle fréquence d'envoi ou nombre de destinataire on considère qu'il s'agit de SPAM merci
July 01 2022
Bonjour, Si vous avez besoin d’aide n’hésitez pas à contacter notre équipe de succès client sur cette adresse mail: fr@hostinger.com Merci
February 18 2022
Bonjour, je suis entrain de créer un fichier testphpmailer mais çà ne fonctionne pas, je reçois HTTP ERROR 500
January 09 2023
Bonjour ! L'erreur 500 indique qu'il y a un problème avec le code PHP Mailer du client, donc si vous obtenez cette eureur, il faudra revérifier votre code. Veuillez contacter notre équipe chargée de la réussite des clients afin qu'elle puisse l'aider avec son code PHP Mailer via l'adresse mail : fr@hostinger.com
September 06 2022
Bonsoir, offrez vous des plans distributeurs hébergement (si je me suis bien fais comprendre) merci.
January 08 2023
Bonjour ! Je vous invite à contacter notre équipe de succès client afin de recevoir une assistance plus adapté à votre situation. Vous pouvez les contacter via email sur cette adresse : fr@hostinger.com Bonne chance !
October 05 2022
Merci a toi :)