PHP Mailer et SMTP : envoyer des emails par programmation
Les applications PHP envoient des emails via le Simple Mail Transfer Protocol (SMTP) en utilisant soit la fonction native mail() de PHP, soit des bibliothèques dédiées comme PHPMailer pour des fonctionnalités et une fiabilité accrues.
Fonction mail() native de PHP
Syntaxe de base : mail(to, subject, message, headers, parameters)
- Limitations : Pas d'authentification SMTP native, gestion d'erreurs pauvre, support des pièces jointes difficile
- Configuration : Nécessite sendmail/postfix sous Linux ; relais SMTP sous Windows
- En-têtes : Construction manuelle des en-têtes MIME pour HTML, pièces jointes, encodage
Bibliothèque PHPMailer (recommandée)
Bibliothèque standard de l'industrie offrant :
- Authentification SMTP (LOGIN, PLAIN, CRAM-MD5, XOAUTH2)
- Emails multipart HTML et texte brut
- Gestion des pièces jointes avec encodage
- Images embarquées pour emails HTML
- Gestion d'erreurs et débogage complets
- Support de la signature DKIM
Configuration des serveurs SMTP
| Fournisseur | Hôte | Port | Chiffrement |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | TLS |
| Outlook/Office365 | smtp.office365.com | 587 | TLS |
| Yahoo | smtp.mail.yahoo.com | 465 | SSL |
| Personnalisé | Votre hôte SMTP | 25/465/587 | TLS/SSL/Aucun |
Méthodes d'authentification
- Nom d'utilisateur/Mot de passe : Standard (utilisez les mots de passe d'application pour comptes 2FA)
- OAuth2/XOAUTH2 : Moderne, sécurisé (Gmail, Microsoft, Yahoo)
- Basée sur certificats : Environnements d'entreprise
Bonnes pratiques
- Utilisez PHPMailer ou Symfony Mailer au lieu de mail() brut
- Stockez les identifiants dans des variables d'environnement, jamais dans le code
- Implémentez la limitation de taux et la gestion des retours (bounces)
- Configurez correctement SPF, DKIM, DMARC pour la réputation du domaine
- Testez avec Mailtrap/Ethereal Email avant la production
