Si possono inviare email tramite server SMTP con PHP? In questo articolo ti guiderò ad una soluzione semplice grazie a PHPMailer. PHP ci permette senza alcun dubbio di inviare email senza ricorrere ad un server SMTP, ma tante volte purtroppo ciò non è sufficiente.
Se sei qui, è perché stai cercando di capire come poter inviare email tramite server SMTP con la potenza di PHP. Dicevo prima che PHP permette di effettuare l’invio email nativamente, ma tante volte ciò non basta ed è giusto spiegarti come poter fare grazie ad una libreria molto bella e pratica: ma prima, le presentazioni.
Il mio nome è Lorenzo Neri e sono un informatico: mi occupo di realizzare contenuti che aiutino persone come te a padroneggiare l’arte del nuovo millennio, l’informatica!
Devi sapere che questo articolo così come tanti altri sono frutto dei miei sbagli nel corso della mia vita lavorativa: poi però a un certo punto ho deciso di cambiare rotta.
La rotta di cui parlo, è stata quella di scrivere articoli come questo che stai leggendo: ciò detto, veniamo a noi.
Inviare email tramite server SMTP con PHP e PHPMailer
Tra le tante librerie offerte da PHP, senza dimenticare il metodo base per inviare email offerto nativamente, non posso che guidarti all’uso e alla scoperta di PHPMailer.
PHPMailer, come avrai potuto notare dal link precedente e, ben venga che sei tornato indietro o diversamente come ti posso aiutare, è una libreria open source e gratuita PHP che permette fra le tante cose, di inviare email tramite tramite server SMTP.
Essa, può essere installata sia tramite composer, sia senza di esso: quindi no, non è necessario usare composer, ma può essere installata nativamente in “modalità vanilla”.
Se ti stessi chiedendo come poter ovviare a questa modalità, ne ho parlato in questo mio articolo, ma poi torna qui sennò rimani senza soluzione!
DI per sé, una volta aggiunto al tuo sistema PHPMailer, per poter impostare il tutto, ti faccio vedere un esempio base:
// Creo la nuova variabile
$mail = new PHPMailer();
// Impostazioni sulla tipologia di server e charset
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
// Specifiche SMTP
$mail->Host = "email.esempio.com"; // SMTP server di esempio
$mail->SMTPDebug = 0; // abilita SMTP debug information (per il testing)
$mail->SMTPAuth = true; // abilita autenticazione SMTP
$mail->Port = 25; // imposta la porta SMTP
$mail->Username = "nome_utente"; // nome utente account SMTP
$mail->Password = "password"; // password account SMTP
// Contenuto
$mail->isHTML(true); // Imposta il formato email come HTML
$mail->Subject = "Ciao sono l'oggetto della mail";
$mail->Body = 'Questo è il corpo della mail HTML <i>in corsivo!</i>';
$mail->AltBody = 'Questo è il formato testuale della mail nel caso di client di posta che non supportano l'HTML';
$mail->addAddress('destinatario@sitoweb.com'); // E lui è ovviamente colui che la riceverà!
// E ovviamente... Mandiamo la mail, no?
$mail->send();
Questo esempio di PHP, come del resto trovi in tutti gli articoli relativi a questa categoria, puoi notare che c’è l’essenziale per inviare una mail tramite SMTP ma non solo!
Avrai notato che la mail può essere impostata per essere HTML, puoi anche decidere di mettere l’altbody nel caso in cui i client di posta dei tuoi destinatari non possano leggere l’HTML, ma non solo!
PHPMailer permette di inviare allegati di (quasi) qualunque tipo, di mettere in copia conoscenza, di inviare avvisi ricezione… Insomma… Il mio è un invito a scoprire la libreria stessa!
2 commenti
grazie lorenzo per i tuoi articoli; in questo non ho ben chiaro, all’interno del codice php, dove va indicato l’indirizzo del destinatario
Ciao Giacomo e grazie per il tuo commento!
Hai ragione, ho aggiornato l’articolo e per poter aggiungere il destinatario è necessario aggiungere all’oggetto la casella di posta stessa.
Come segue:
$mail->addAddress('destinatario@sitoweb.com');
Un caro saluto,
Lorenzo