Envoyer un message depuis un script PHP repose sur deux méthodes principales : la fonction mail() intégrée au langage et l’utilisation d’une bibliothèque comme PHPMailer. La première peut suffire pour des tests, mais elle montre vite ses limites en production. Pour une communication fiable sur un hébergement comme Infomaniak, le recours au protocole SMTP, avec authentification et configuration complète, améliore la délivrabilité et évite de finir en indésirable. Ce guide vous accompagne dans chaque étape, des bases aux options avancées.
Comment fonctionne l’envoi d’un e-mail en PHP ?
L’envoi d’un message électronique via PHP repose sur l’accès au service de messagerie du serveur hôte. La fonction intégrée appelle le binaire sendmail ou un serveur SMTP local, mais son comportement dépend fortement de la configuration du système. Sans authentification ni en-têtes complets, les messages peuvent être bloqués ou considérés comme spam. Sur un hébergement Infomaniak, il est recommandé de désactiver mail() et de passer par une configuration SMTP complète.
A lire aussi : Création du tout premier navigateur avec une interface graphique : retour sur l’histoire
Comment utiliser la fonction mail() en PHP pour envoyer un message ?
La fonction mail() accepte trois arguments de base : l’adresse du destinataire, le sujet et le corps du message. Un quatrième paramètre permet d’ajouter des en-têtes, essentiels pour spécifier l’expéditeur ou le format du contenu.
mail(
'contact@exemple.com',
'Sujet du message',
"Bonjour,\nCeci est un message automatique.",
"From: webmaster@exemple.com\r\nContent-Type: text/plain; charset=UTF-8"
);
Cette méthode reste basique. Elle ne permet pas une gestion avancée des erreurs, ni l’envoi via des serveurs SMTP externes. Elle est donc peu adaptée à un usage professionnel.
Comment configurer correctement les paramètres SMTP pour PHP ?
L’usage de PHPMailer, SwiftMailer ou Symfony Mailer offre un contrôle total sur les paramètres SMTP. Pour chaque expéditeur, il faut fournir :
| Paramètre | Exemple de valeur |
|---|---|
| Hôte SMTP | smtp.mail.infomaniak.com |
| Port | 587 (STARTTLS) ou 465 (SSL) |
| Authentification | Oui |
| Nom d’utilisateur | identifiant fourni par le service SMTP |
| Mot de passe | mot de passe SMTP sécurisé |
| Sécurité | TLS ou SSL |
Chez Infomaniak, toutes ces données sont accessibles dans la console mail de l’espace client. Le respect exact de ces paramètres est indispensable pour un bon fonctionnement.
Pourquoi l’envoi de mail en PHP ne fonctionne-t-il pas sur votre serveur ?
Plusieurs causes peuvent bloquer l’envoi :
- Serveur sans sendmail actif
- Port SMTP sortant bloqué
- Expéditeur non autorisé (SPF, DKIM manquants)
- Fonction mail() désactivée dans php.ini
Un simple test avec phpinfo() permet de vérifier si sendmail_path est défini. En cas de doute, un service comme Mailtrap ou l’interface SMTP d’Infomaniak permet de simuler un envoi et d’analyser le comportement de votre script.
À consulter : Localisation exacte de l’adresse IP 87.217.27.254 : quel pays ?
Comment envoyer un e-mail en PHP avec une bibliothèque comme PHPMailer ?
PHPMailer est compatible avec Composer et s’utilise en quelques lignes. Il gère l’authentification SMTP, les pièces jointes, les messages HTML, et la journalisation des erreurs.
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.mail.infomaniak.com';
$mail->SMTPAuth = true;
$mail->Username = 'user';
$mail->Password = 'pass';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('from@example.com', 'Expéditeur');
$mail->addAddress('destinataire@example.com');
$mail->Subject = 'Sujet';
$mail->Body = 'Message texte';
$mail->send();
Cette méthode est parfaitement compatible avec les serveurs d’Infomaniak, et assure une délivrabilité supérieure grâce à la configuration complète du compte expéditeur.
Comment sécuriser l’envoi d’e-mails en PHP pour éviter le spam et les erreurs ?

Chaque message doit comporter des en-têtes cohérents : adresse expéditeur valide, nom lisible, sujet explicite. Les champs Reply-To, Return-Path, List-Unsubscribe améliorent aussi la réputation de l’expéditeur. Il faut également vérifier que les enregistrements SPF, DKIM et DMARC du domaine sont correctement configurés, notamment si vous utilisez un domaine personnalisé.
Des outils comme MXToolbox permettent de tester ces enregistrements.
Comment envoyer un e-mail avec pièce jointe en PHP ?
Les bibliothèques comme PHPMailer permettent d’ajouter un document ou une image en quelques lignes :
$mail->addAttachment('/chemin/fichier.pdf', 'NomDuFichier.pdf');
La fonction mail() ne gère pas cela directement : il faudrait construire manuellement un message multipart avec des encodages MIME, ce qui est long et risqué. L’utilisation d’une bibliothèque est donc fortement recommandée.
A lire aussi : iPhone désactivé : comment le réactiver sans ordinateur ?
Comment tester et vérifier la délivrabilité d’un e-mail envoyé en PHP ?
Le meilleur moyen reste d’utiliser des plateformes comme Mailtrap, Gmail, Outlook, et de surveiller :
- L’arrivée en boîte de réception principale
- L’analyse anti-spam des entêtes
- La présence de la signature DKIM
- La conformité SPF/DMARC
Sur un hébergement Infomaniak, vous pouvez activer les journaux SMTP pour inspecter le détail des échanges avec le serveur de destination. Cela permet d’identifier les erreurs de configuration et d’améliorer les performances d’envoi.













