PHPMailer e SMTP: inviare email in modo programmatico
Le applicazioni PHP inviano email usando il Simple Mail Transfer Protocol (SMTP) tramite la funzione nativa mail() di PHP o librerie dedicate come PHPMailer per funzionalità avanzate e maggiore affidabilità.
Funzione mail() nativa di PHP
Sintassi di base: mail(to, subject, message, headers, parameters)
- Limiti: Nessuna autenticazione SMTP nativa, gestione errori scarsa, supporto allegati difficile
- Configurazione: Richiede sendmail/postfix su Linux; relay SMTP su Windows
- Intestazioni: Bisogna costruire manualmente le intestazioni MIME per HTML, allegati, encoding
Libreria PHPMailer (consigliata)
Libreria standard del settore che fornisce:
- Autenticazione SMTP (LOGIN, PLAIN, CRAM-MD5, XOAUTH2)
- Email multipart HTML e testo semplice
- Gestione allegati con encoding
- Immagini incorporate per email HTML
- Gestione errori e debug completi
- Supporto alla firma DKIM
Configurazione server SMTP
| Provider | Host | Porta | Crittografia |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | TLS |
| Outlook/Office365 | smtp.office365.com | 587 | TLS |
| Yahoo | smtp.mail.yahoo.com | 465 | SSL |
| Personalizzato | Il tuo host SMTP | 25/465/587 | TLS/SSL/Nessuna |
Metodi di autenticazione
- Username/Password: Standard (usa App Password per account con 2FA)
- OAuth2/XOAUTH2: Moderno, sicuro (Gmail, Microsoft, Yahoo)
- Basato su certificato: Ambienti enterprise
Best practice
- Usa PHPMailer o Symfony Mailer invece della funzione mail() nativa
- Conserva le credenziali in variabili d'ambiente, mai nel codice
- Implementa rate limiting e gestione bounce
- Imposta SPF, DKIM, DMARC corretti per la reputazione del dominio
- Testa con Mailtrap/Ethereal Email prima della produzione