Invia e-mail utilizzando il server SMTP di Gmail dallo script PHP
La posta elettronica svolge un ruolo importante nel sito web. Ogni sito Web di solito deve inviare e-mail agli utenti. Queste e-mail possono essere inviate dalla pagina dei contatti, dalla newsletter, dal modulo di registrazione, ecc.
PHP fornisce una mail()
funzione che viene utilizzata per inviare un’e-mail. Ma ci sono limitazioni durante l’utilizzo del mail()
metodo. Non puoi inviare email da un server di sviluppo locale. Un altro svantaggio è che c’è un’alta possibilità che la tua email finisca in uno spam.
Nella maggior parte dei casi, il mail()
metodo non invia nemmeno un’e-mail. Ciò potrebbe essere dovuto alla configurazione del server errata o a qualcos’altro.
Per uscire da questi problemi o limitazioni, è possibile utilizzare il server SMTP per inviare le e-mail.
In questo articolo, studiamo come utilizzare PHPMailer e il server SMTP di Gmail per l’invio di email.
Installazione
Per prima cosa devi installare la libreria PHPMailer nel tuo progetto. Il modo consigliato per installare una libreria è tramite Composer.
Apri il prompt dei comandi nella directory principale del tuo progetto ed esegui il comando seguente.
composer require phpmailer/phpmailer
Poiché utilizziamo Gmail SMTP, devi modificare alcune impostazioni sul tuo account Google. Accedi al tuo account Google e fai clic su Il mio account. Una volta che sei nella pagina Il mio account, fai clic su Sicurezza. Scorri verso il basso e troverai le impostazioni "Accesso alle app meno sicure". Impostalo su ON.
Successivamente, dobbiamo scrivere un codice che invii un’e-mail utilizzando la libreria PHPMailer e il server SMTP di Gmail.
Script PHP per l’invio di e-mail utilizzando il server SMTP di Gmail
Apri il tuo file PHP dove devi scrivere un codice per le email. Ad esempio, presumo che tu abbia un sendemail.php
file nella directory principale.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
Nel codice sopra, ho incluso l’ambiente della libreria PHPMailer nel file PHP.
Successivamente, per inviare e-mail utilizzando PHPMailer, l’utente deve passare l’indirizzo del server SMTP di Gmail, la porta SMTP per Gmail e l’autenticazione SMTP (che non è altro che il nome utente e la password di un account Google).
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = 'GMAIL_USERNAME'; //username
$mail->Password = 'GMAIL_PASSWORD'; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //SMTP port
Questo è tutto! Hai finito con la configurazione. Ora puoi procedere con l’invio di un’e-mail a un utente.
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Sostituisci i segnaposto con i valori effettivi. Esegui questo file su un browser e la tua email dovrebbe essere inviata all’indirizzo email del destinatario.
Invio di allegati in un’e-mail
Utilizzando la libreria PHPMailer è possibile inviare allegati singoli o multipli in una e-mail. Tutto quello che devi fare è passare un percorso di directory dei tuoi allegati al metodo addAttachment
come segue.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Il nostro codice finale è il seguente.
sendemail.php
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
require_once "constants.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = GMAIL_USERNAME; //username
$mail->Password = GMAIL_PASSWORD; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //smtp port
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.png');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
?>
Spero che tu capisca come inviare e-mail utilizzando il server SMTP di Gmail da uno script PHP. Per favore condividi i tuoi pensieri e suggerimenti in un commento qui sotto.
articoli Correlati
- Invio di e-mail tramite il server SMTP di Gmail in Laravel
- Invia e-mail utilizzando il server SMTP di Gmail e la libreria Swift Mailer
- Invia e-mail utilizzando Mailjet in PHP