Benvenuto su PHP Italia!

  1. Home
  2. Blog
  3. Tutorial
  4. Inviare email in PHP con PHPMailer
Inviare email in PHP con PHPMailer

Inviare email in PHP con PHPMailer

Scritto da Categoria: Tutorial Tipo di lettura: 4 min.

Inviare email è una parte essenziale di molte applicazioni web. Che tu debba inviare email di attivazione account, newsletter o email transazionali, PHP offre un modo potente e flessibile per farlo. Tuttavia, la funzione mail() di PHP ha delle limitazioni. Per superarle, possiamo utilizzare la libreria PHPMailer.

PHPMailer: alternativa alla funzione mail di PHP

PHPMailer è una libreria PHP di terze parti che fornisce un modo semplice per inviare email in PHP. Offre una gamma di funzionalità che la rendono un'alternativa popolare alla funzione mail() di PHP, come il supporto per email HTML, allegati e autenticazione SMTP.

Vantaggi di PHPMailer

  • Facilità d'Uso: PHPMailer è facile da configurare e utilizzare.
  • Flessibilità: Offre un alto livello di personalizzazione e flessibilità.
  • Sicurezza: Supporta la crittografia e l'autenticazione quando si inviano email tramite SMTP.
  • Gestione degli Errori: Fornisce messaggi di errore dettagliati e informazioni di debug.

Come installare PHPMailer

Puoi installare la libreria PHPMailer nel tuo progetto PHP eseguendo il seguente comando con Composer:

composer require phpmailer/phpmailer

Inviare email con PHPMailer

Per inviare email da un server web locale, puoi usare il seguente codice:

<?php
require_once 'vendor/autoload.php';

$mail = new PHPMailer;
$mail->From = '[email protected]';
$mail->FromName = 'Nome Completo';
$mail->addAddress('[email protected]', 'Nome Destinatario');
$mail->isHTML(true);
$mail->Subject = 'Oggetto dell\'Email';
$mail->Body = '<i>Corpo dell\'email in HTML</i>';
$mail->AltBody = 'Questa è la versione in testo semplice del contenuto dell\'email';

if(!$mail->send()) {
    echo 'Errore nell\'invio: ' . $mail->ErrorInfo;
} else {
    echo 'Email inviata con successo';
}
?>

Inviare email con gli allegati

Puoi anche inviare email con allegati utilizzando PHPMailer:

<?php
require_once 'vendor/autoload.php';

$mail = new PHPMailer;
$mail->From = '[email protected]';
$mail->FromName = 'Nome Completo';
$mail->addAddress('[email protected]', 'Nome Destinatario');
$mail->addAttachment('file.txt', 'File.txt');
$mail->addAttachment('images/profile.png');
$mail->isHTML(true);
$mail->Subject = 'Oggetto dell\'Email';
$mail->Body = '<i>Corpo dell\'email in HTML</i>';
$mail->AltBody = 'Questa è la versione in testo semplice del contenuto dell\'email';

if(!$mail->send()) {
    echo 'Errore nell\'invio: ' . $mail->ErrorInfo;
} else {
    echo 'Email inviata con successo';
}
?>

Utilizzare PHPMailer in locale

Ecco una guida passo passo per utilizzare PHPMailer in localhost:

  1. Scarica la libreria PHPMailer da GitHub.
  2. Estrai il file zip scaricato e posiziona la cartella PHPMailer nella directory root del tuo localhost.
  3. Crea un nuovo file PHP nel tuo localhost e includi la libreria PHPMailer:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

$mail = new PHPMailer(true);

// Impostazioni del server
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'yourpassword';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

// Destinatari
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Joe User');
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

// Contenuto
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body in bold!';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Errore nell\'invio: ' . $mail->ErrorInfo;
} else {
    echo 'Email inviata con successo';
}
?>

PHPMailer con SMTP

Considera il seguente esempio di PHPMailer per inviare email utilizzando il protocollo SMTP:

<?php
require_once 'vendor/autoload.php';

$mail = new PHPMailer;
$mail->SMTPDebug = 3;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'super_secret_password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->From = '[email protected]';
$mail->FromName = 'Nome Completo';
$mail->addAddress('[email protected]', 'Nome Destinatario');
$mail->isHTML(true);
$mail->Subject = 'Oggetto dell\'Email';
$mail->Body = '<i>Corpo dell\'email in HTML</i>';
$mail->AltBody = 'Questa è la versione in testo semplice del contenuto dell\'email';

if(!$mail->send()) {
    echo 'Errore nell\'invio: ' . $mail->ErrorInfo;
} else {
    echo 'Email inviata con successo';
}
?>

Prima di inviare un'email tramite SMTP, sono necessari il nome host, il numero di porta e la crittografia. Inoltre, potrebbe essere necessario un nome utente e una password per l'autenticazione.

Perché utilizzare PHPMailer

Il più grande vantaggio dell'utilizzo di SMTP remoto è che, nella funzione mail() di PHP, è impostato su un nome di dominio diverso da quello locale. Verrà contrassegnato come spam nel server email del destinatario.

PHPMailer supporta la verifica POP-before-SMTP per l'invio di email. Quindi, consente di inviare email utilizzando SMTP e autenticarsi tramite POP. Ma puoi ricevere email dai server di posta tramite POP3.

Utilizzando PHPMailer, puoi garantire che le tue email vengano consegnate senza problemi e in modo efficiente senza la necessità di gestire l'invio delle email da solo.