Mar 12, 2026
Faradilla A.
7min di lettura
L’email è essenziale per qualsiasi sito web. Viene utilizzata per tutto, dal reset delle password alle richieste dei clienti. La funzione PHP mail() può inviare messaggi semplici, ma spesso non riesce a recapitarli nella posta in arrivo e non offre le funzionalità su cui le aziende fanno affidamento.
PHPMailer risolve questi problemi offrendo autenticazione SMTP, crittografia sicura, formattazione HTML e supporto per gli allegati. In questo modo i tuoi messaggi hanno un aspetto professionale e raggiungono davvero i destinatari.
Per sfruttare al meglio PHPMailer, devi sapere come:
PHPMailer è una libreria PHP che ti permette di inviare email direttamente dal tuo server. A differenza della funzione PHP mail(), supporta funzionalità avanzate come:
Queste funzionalità rendono PHPMailer una delle soluzioni più utilizzate dagli sviluppatori che hanno bisogno di gestire email in modo sicuro e professionale nelle loro applicazioni.
Sì, nella maggior parte dei casi PHPMailer è una scelta migliore rispetto alla funzione mail(). Ecco perché:
Se stai sviluppando qualcosa che va oltre un semplice script, PHPMailer offre molto più controllo e affidabilità rispetto alla funzione mail().
Segui questi passaggi per inviare email con PHPMailer:
Ecco un semplice esempio:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Configurazione SMTP
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'tua@email.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Impostazioni email
$mail->setFrom('tua@email.com', 'Tuo nome');
$mail->addAddress('destinatario@dominio.com');
$mail->Subject = 'Email di prova';
$mail->Body = 'Questa è una email di prova inviata con PHPMailer.';
$mail->send();
echo 'Il messaggio è stato inviato';
} catch (Exception $e) {
echo "Errore: {$mail->ErrorInfo}";
}Il modo più semplice per installare PHPMailer è usare Composer, il gestore delle dipendenze per PHP. Esegui questo comando nella directory principale del tuo progetto:
composer require phpmailer/phpmailer
Dopo l’installazione, troverai PHPMailer all’interno della cartella vendor/ del progetto:
/your-project
/vendor
/phpmailer
/phpmailer Per usarlo, carica l’autoloader di Composer all’inizio dello script PHP:
require 'vendor/autoload.php';
Se non usi Composer, puoi anche scaricare PHPMailer da GitHub. In questo caso, inserisci la cartella PHPMailer nel progetto e includi i file manualmente:
require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; require 'PHPMailer/src/Exception.php';
Composer è fortemente consigliato per chi è alle prime armi, perché gestisce le dipendenze e rende più semplici gli aggiornamenti.
PHPMailer offre diversi metodi e proprietà per creare email professionali. Ecco quelli più importanti, insieme a brevi esempi che puoi riutilizzare:
$mail->setFrom('no-reply@domain.com', 'Nome del sito web');$mail->addAddress('utente@example.com', 'John Doe');
$mail->addAddress('admin@example.com'); // più destinatari$mail->addReplyTo('supporto@dominio.com', 'Team di supporto');$mail->Subject = 'Conferma ordine';
$mail->Body = '<h1>Grazie!</h1><p>Il tuo ordine è stato ricevuto.</p>';
$mail->AltBody = 'Grazie! Il tuo ordine è stato ricevuto.';
$mail->addAttachment('/path/to/fattura.pdf', 'Fattura.pdf');Questi componenti ti permettono di controllare completamente il contenuto e il funzionamento delle email, offrendo maggiore affidabilità rispetto alla funzione PHP mail().
La maggior parte dei fornitori di hosting, incluso Hostinger, ti permette di inviare email tramite i propri server SMTP. Questo è il metodo consigliato perché migliora il recapito dei messaggi e riduce il rischio che le email vengano contrassegnate come spam.
Per usare l’SMTP di Hostinger con PHPMailer, ti serviranno questi dati:
Ecco un esempio di configurazione:
$mail->isSMTP(); $mail->Host = 'smtp.hostinger.com'; $mail->SMTPAuth = true; $mail->Username = 'tua@hostinger.com'; $mail->Password = 'password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // or ENCRYPTION_SMTPS for port 465 $mail->Port = 587;
🔑 Consigli per chi è alle prime armi:
Una volta configurato, PHPMailer utilizzerà i server di Hostinger per inviare email in modo sicuro.
PHPMailer viene spesso utilizzato per gestire i moduli di contatto. Avrai bisogno di un modulo HTML nella pagina e di uno script PHP che usa PHPMailer per inviare il messaggio.
Passaggio 1. Aggiungi un modulo HTML di base
Questo modulo raccoglie il nome, l’indirizzo email e il messaggio del visitatore. Salvalo come index.html oppure inseriscilo direttamente nella pagina web:
<form method="POST" action="/contact.php"> <label for="name">Nome</label> <input id="name" name="name" type="text" required> <label for="email">Email</label> <input id="email" name="email" type="email" required> <label for="message">Messaggio</label> <textarea id="message" name="message" rows="6" required></textarea> <button type="submit">Invia</button> </form>
Passaggio 2. Gestisci la richiesta POST con PHPMailer
Ora che il modulo è pronto, crea uno script PHP (contact.php) per elaborare l’invio e inviare il messaggio tramite PHPMailer. Questo script recupera i dati inviati dal modulo, li valida e li sanitizza, quindi li invia al tuo indirizzo email tramite PHPMailer:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Validazione e sanitizzazione di base
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
exit('Indirizzo email non valido.');
}
// Escape del contenuto dell’utente prima di inserirlo nell’HTML
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
$safeEmail = htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
$safeMessage = nl2br(htmlspecialchars($message, ENT_QUOTES, 'UTF-8'));
$mail = new PHPMailer(true);
try {
// SMTP
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->SMTPAuth = true;
$mail->Username = 'tuo@hostinger.com';
$mail->Password = 'password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 587
$mail->Port = 587;
// Contenuto dell’email
$mail->setFrom('tuo@hostinger.com', 'Contatto del sito');
$mail->addAddress('tuo@hostinger.com', 'Posta in arrivo');
$mail->addReplyTo($email, $name);
$mail->Subject = 'Nuovo invio dal modulo di contatto';
$mail->isHTML(true);
$mail->Body = "<p><strong>Nome:</strong> {$safeName}</p>
<p><strong>Email:</strong> {$safeEmail}</p>
<p><strong>Messaggio:</strong><br>{$safeMessage}</p>";
$mail->AltBody = "Nome: {$name}\nEmail: {$email}\nMessaggio:\n{$message}";
// Caricamento file opzionale
// if (!empty($_FILES['attachment']['tmp_name'])) {
// $mail->addAttachment($_FILES['attachment']['tmp_name'], $_FILES['attachment']['name']);
// }
$mail->send();
echo 'Messaggio inviato con successo.';
} catch (Exception $e) {
echo 'Errore: ' . $mail->ErrorInfo;
}
}Consigli utili:
PHPMailer mostra messaggi di errore dettagliati che ti aiutano a individuare rapidamente il problema. Ecco alcuni degli errori più comuni e come risolverli.
Questo errore di solito significa che l’indirizzo o la porta del server SMTP non sono corretti. Le cause più comuni includono:
👉 Se non sei sicuro delle impostazioni da usare, chiedi al tuo fornitore di hosting quali dati SMTP usare e verifica che le porte siano aperte sulla tua rete.
Questo errore indica spesso un problema di autenticazione. In pratica, PHPMailer riesce a raggiungere il server, ma le credenziali non vengono accettate. Le cause più comuni sono:
👉 Se il problema persiste, prova ad accedere al tuo account tramite Webmail per verificare che le credenziali siano corrette.
Questo significa che il server di posta del destinatario ha rifiutato il messaggio perché il dominio non ha record di autenticazione configurati correttamente. Si tratta di record DNS che dimostrano che sei autorizzato a inviare email dal tuo dominio.
👉 Per risolvere il problema, accedi al pannello del tuo registrar di domini o al pannello di hosting e aggiungi i record DNS richiesti. La maggior parte dei fornitori di hosting, incluso Hostinger, offre guide passo per passo per configurare SPF, DKIM e DMARC.
Senza questi record, è molto più probabile che le email finiscano nello spam o vengano rifiutate completamente.
Sì. PHPMailer funziona con Gmail, Outlook, Yahoo e con la maggior parte degli altri fornitori. Ti servono solo le impostazioni SMTP corrette e il metodo di autenticazione giusto. Per esempio, per Gmail puoi usare queste impostazioni:
Esempio:
$mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'iltuonome@gmail.com'; $mail->Password = 'tua-password-per-le-app'; // non la tua normale password di accesso $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;
Tieni presente che alcuni fornitori applicano limiti di invio. Molte caselle email gratuite hanno un limite giornaliero di messaggi. Ad esempio, Gmail ha un limite relativamente basso per l’invio tramite SMTP. Se hai bisogno di inviare più email o di migliorare la velocità di consegna, valuta l’uso di un servizio email dedicato. PHPMailer può comunicare con qualsiasi server SMTP, quindi passare a un altro fornitore in futuro è semplice.
Checklist generale:
Sì. L’email resta uno dei metodi più affidabili per inviare messaggi transazionali, campagne di marketing e risposte dell’assistenza clienti, anche con la diffusione di nuovi strumenti di comunicazione. Per le aziende, una configurazione email professionale con automazione permette di risparmiare tempo e migliorare il coinvolgimento degli utenti.
Se vuoi andare oltre l’invio manuale delle email, valuta l’uso di strumenti di email marketing automation per gestire campagne e comunicazioni con i clienti in modo più efficiente.
Tutti i contenuti dei tutorial presenti su questo sito web sono soggetti ai rigorosi standard editoriali e ai valori di Hostinger.