mail() de PHP : ce que signifie le résultat et quand utiliser SMTP
Fonction mail() de PHP
PHP permet de remettre un message au transport de courrier local avec mail(). Définissez toujours un expéditeur valide et contrôlé par l'application :
$headers = ['From' => 'web@tudominio.com']; $accepted = mail('email@destino.com', 'Título email', 'Mensaje', $headers);
Un résultat true confirme seulement que le système local a accepté le message pour le traiter ; il ne prouve pas que le serveur destinataire l'a accepté ni qu'il est arrivé dans la boîte de réception.
Problèmes liés à l'utilisation de mail()
Le point faible d'un envoi difficile à diagnostiquer est le manque d'informations sur ce qui se passe après sa remise au transport. Avant de remplacer du code, vérifiez si le message a été accepté, rejeté ou s'il est resté en attente.
La fonction permet de construire l'en-tête d'expéditeur sans authentifier par elle-même que l'application contrôle ce domaine. N'acceptez jamais une valeur From fournie librement par le visiteur ; utilisez une adresse fixe de votre domaine et placez l'adresse de l'utilisateur dans Reply-To seulement après l'avoir validée.
Les fournisseurs vérifient des mécanismes comme SPF, DKIM et DMARC, ainsi que la réputation et le format du message. mail() ne configure pas à lui seul ces mécanismes et n'informe pas du résultat final de la livraison.
Une configuration incomplète peut entraîner des rejets ou un classement en spam, mais le résultat doit être vérifié dans le suivi de livraison et dans les en-têtes d'un envoi réel.
L'adéquation de mail() ne dépend pas du fait que le destinataire soit interne ou externe, mais de la configuration du transport local, de l'authentification qui en résulte et de la possibilité d'observer les erreurs et les rebonds. Pour les messages importants, utilisez un transport qui permet de s'authentifier, d'enregistrer le résultat et de contrôler l'expéditeur.
E-mails envoyés avec authentification SMTP
Une alternative est l'envoi par SMTP authentifié avec un vrai compte créé dans cPanel. Utilisez le nom d'hôte avec un certificat valide indiqué dans Connecter des appareils, TLS obligatoire et le port sécurisé recommandé. Le From doit être une adresse contrôlée et alignée avec le compte ou le domaine authentifié. SMTP améliore le contrôle et la traçabilité, mais ne garantit pas non plus que le destinataire accepte le message.
Ne remplacez pas l'expéditeur par un compte Gmail comme solution générique. Gmail peut être utilisé via sa configuration SMTP ou OAuth quand l'application le permet, mais une erreur 401 concerne cette autorisation et doit être résolue séparément ; elle ne diagnostique ni le transport local de mail() ni la livraison au destinataire.
De nombreuses applications proposent une option pour configurer SMTP. Dans Joomla, vous pouvez sélectionner ce transport et saisir le serveur, le chiffrement et les identifiants du compte. Vérifiez le résultat avec un envoi réel depuis l'application.
Dans WordPress, vous pouvez utiliser une extension SMTP compatible, comme Easy WP SMTP.
Pour les développements sur mesure, vous pouvez intégrer une bibliothèque maintenue comme PHPMailer
Préparer le passage à SMTP
Conservez les identifiants dans la configuration privée de l'application, hors du dépôt et du répertoire public. Utilisez une bibliothèque maintenue, la validation du certificat ainsi que le port et le mode TLS indiqués par le fournisseur. Ne désactivez pas la vérification du certificat pour masquer une erreur de connexion.
Envoyez un test représentatif et enregistrez la date, le destinataire et l'identifiant du message sans conserver de mots de passe. Vérifiez le suivi de livraison et le résultat chez le destinataire. Si votre application réessaie, évitez de générer des doublons quand le premier envoi a déjà été accepté mais que la réponse s'est perdue.
N'insérez pas de données de formulaire non validées dans les destinataires ou les en-têtes. Pour répondre au visiteur, validez son adresse et utilisez-la comme Reply-To, en gardant un From contrôlé par votre application.
Cela peut aussi vous aider
- Ajouter un expéditeur sûr dans SpamAssassin Indique comment réduire dans SpamAssassin le score d'une adresse d'expéditeur précise et explique po...
- Améliorer la classification de l'antispam SpamAssassin Explique comment améliorer SpamAssassin en signalant les bonnes et les mauvaises classifications dep...
- Authentifier un domaine Hostsuar dans Brevo Explique comment copier dans la zone DNS faisant autorité les enregistrements fournis par Brevo, évi...
- BoxTrapper : vérification des expéditeurs et examen de la file d'attente Décrit comment BoxTrapper retient les expéditeurs inconnus jusqu'à leur vérification et comment gére...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.