Invia email in PHP utilizzando Swift Mailer

In questo articolo, esploreremo la libreria Swift Mailer, che ti consente di inviare e-mail da applicazioni PHP. Iniziando con l'installazione e la configurazione, passeremo attraverso un esempio reale che dimostra vari aspetti dell'invio di email utilizzando la libreria Swift Mailer.

Che cosa è Swift Mailer?

Quando si tratta di inviare e-mail in applicazioni PHP, hai una miriade di opzioni tra cui scegliere. Si potrebbe anche finire per creare il proprio wrapper per configurare rapidamente le funzionalità di posta elettronica. Tuttavia, sei sempre fortunato se stai utilizzando una libreria ben mantenuta e ricca di funzionalità.

Swift Mailer è una libreria popolare per l'invio di e-mail da applicazioni PHP ed è ampiamente accettata dalla comunità PHP. È una libreria ricca di funzionalità, nel senso che copre quasi ogni aspetto delle e-mail di invio, dall'impostazione di diversi trasporti alla personalizzazione del messaggio che viene inviato.

In realtà, è un processo abbastanza semplice per inviare e-mail usando la libreria Swift Mailer.

  1. Inizializza l'oggetto Transport (SMTP / Sendmail).
  2. Inizializza l'oggetto Mailer con quel Trasporto.
  3. Inizializza l'oggetto Messaggio.
  4. Formatta e invia il messaggio.

Nella prossima sezione, passeremo attraverso un esempio del mondo reale per dimostrare ciascuno dei passaggi sopra menzionati.

Installazione e configurazione

In questa sezione, passeremo attraverso l'installazione e la configurazione della libreria Swift Mailer. L'installazione è abbastanza semplice, poiché è già disponibile come pacchetto di Composer. Prima di procedere, assicurati di aver installato Composer perché ne avremo bisogno per installare la libreria di Swift Mailer.

Una volta installato Composer, vai avanti e prendi la libreria di Swift Mailer usando il seguente comando.

$ compositore richiede "swiftmailer / swiftmailer: ^ 6.0"

Con questo, la libreria Swift Mailer dovrebbe essere installata, insieme con le necessarie dipendenze in venditore directory. E i contenuti del nuovo creato composer.json dovrebbe assomigliare a questo:

"require": "swiftmailer / swiftmailer": "^ 6.0"

Quindi questa è la parte di installazione, ma come si dovrebbe utilizzarla? In realtà, è solo questione di includere il autoload.php file creato da Composer nella tua applicazione, come mostrato nello snippet seguente.

Come inviare e-mail

Nella sezione precedente, abbiamo esplorato come installare la libreria Swift Mailer usando Composer. In questa sezione, inizieremo ad implementare un esempio reale.

Vai avanti e crea il email.php file con il seguente contenuto.

setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx'); // Crea il Mailer usando il tuo Trasporto $ mailer = new Swift_Mailer ($ transport); // Crea un messaggio $ message = new Swift_Message (); // Imposta un messaggio $ "soggetto "-> setSubject (" Demo message using the SwiftMailer library. "); // Imposta il messaggio "Da indirizzo" $-> setFrom (['[email protected]' => 'nome mittente']); // Imposta "To address" [Usa il metodo setTo per più destinatari, l'argomento dovrebbe essere array] $ message-> addTo ('[email protected] ',' nome del destinatario '); // Aggiungi l'indirizzo "CC" [Usa il metodo setCc per più destinatari, l'argomento dovrebbe essere array] $ message-> addCc ('[email protected] ',' nome del destinatario '); // Aggiungi l'indirizzo "BCC" [Usa il metodo setBcc per più destinatari, l'argomento dovrebbe essere array] $ message-> addBcc ('[email protected] ',' nome del destinatario '); // Aggiungi un "allegato" (Inoltre, i dati dinamici possono essere allegati) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Attachment-> setFilename ( 'Report.xls'); $ Message-> allegare ($ allegato); // Aggiungi inline "Immagine" $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> embed ($ inline_attachment); // Imposta il messaggio $ "Body" di testo normale-> setBody ("Questo è il corpo del testo in chiaro del messaggio. \ NGrazie, \ nAdmin"); // Imposta un messaggio $ "Body" -> addPart ('Questa è la versione HTML del messaggio.
Esempio di immagine incorporata:

Grazie,
Admin ',' text / html '); // Invia il messaggio $ result = $ mailer-> send ($ message); catch (Exception $ e) echo $ e-> getMessage ();

Vediamo come funziona questo codice.

Inizializza Swift Mailer

La libreria Swift Mailer supporta diversi trasporti come SMTP e Sendmail durante l'invio di una e-mail. Quindi la prima cosa che devi fare è inizializzare il trasporto oggetto.

Nell'esempio precedente, ho utilizzato il trasporto SMTP per inviare e-mail.

$ transport = (new Swift_SmtpTransport ('smtp.hostname', 25)) -> setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx');

Naturalmente, se si desidera utilizzare il protocollo Sendmail, è necessario inizializzare il corrispondente Swift_SendmailTransport oggetto.

// Crea il trasporto di SendMail $ transport = new Swift_SendmailTransport ('/ usr / sbin / sendmail -bs');

Una volta creato il trasporto, dobbiamo inizializzare un oggetto mailer e passare il trasporto che abbiamo già creato.

// Crea il Mailer usando il tuo Trasporto $ mailer = new Swift_Mailer ($ transport);

Crea un messaggio

Dopo aver creato gli oggetti trasporto e mailer, l'unica cosa rimanente è istanziare il Swift_Message oggetto e decorarlo con gli attributi necessari.

// Crea un messaggio $ message = new Swift_Message ();

Ora, useremo il $ messaggio oggetto di preparare i contenuti del nostro messaggio. Per cominciare, il SetSubject metodo ti permette di impostare l'oggetto dell'e-mail.

// Imposta un messaggio $ "soggetto "-> setSubject (" Demo message using the SwiftMailer library. ");

Il setFrom metodo è usato per impostare l'indirizzo "Da" dell'email.

// Imposta il messaggio "Da indirizzo" $-> setFrom (['[email protected]' => 'Nome mittente']);

Andando avanti, impostiamo l'indirizzo "A" dell'e-mail. In effetti, ci sono un paio di varianti per impostare i destinatari dell'email. Se si desidera impostare un singolo destinatario, è possibile utilizzare il aggiungere a metodo e il impostato il metodo, d'altra parte, viene utilizzato per impostare più destinatari.

// Imposta "To address" [Usa il metodo setTo per più destinatari, l'argomento dovrebbe essere array] $ message-> addTo ('[email protected] ',' receiver name ');

Il addCc e addBcc i metodi vengono utilizzati per impostare rispettivamente gli indirizzi CC e BCC dell'e-mail.

// Aggiungi l'indirizzo "CC" [Usa il metodo setCc per più destinatari, l'argomento dovrebbe essere array] $ message-> addCc ('[email protected] ',' nome del destinatario '); // Aggiungi l'indirizzo "BCC" [Usa il metodo setBcc per più destinatari, l'argomento dovrebbe essere array] $ message-> addBcc ('[email protected] ',' nome del destinatario ');

Allegare file

Successivamente, diamo un'occhiata a come è possibile allegare un file a una e-mail. 

Devi prima istanziare il Swift_Attachment oggetto con un nome file valido. Dopo aver creato l'oggetto allegato, puoi aggiungerlo all'e-mail con allegare metodo. Inoltre, puoi usare il setFilename metodo se si desidera modificare il nome file che verrà visualizzato nell'allegato del messaggio.

// Aggiungi un "allegato" (Inoltre, i dati dinamici possono essere allegati) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Attachment-> setFilename ( 'Report.xls'); $ Message-> allegare ($ allegato);

Insieme ai normali file allegati, a volte vuoi incorporare immagini nel testo del messaggio. Puoi farlo usando il incorporare metodo, come mostrato nello snippet seguente. Il incorporare metodo restituisce l'ID univoco dell'oggetto incorporato, che è possibile utilizzare in un secondo momento nel messaggio mentre si fa riferimento all'immagine tramite src proprietà.

// Aggiungi inline "Immagine" $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> embed ($ inline_attachment);

Il corpo del messaggio

Quindi, impostiamo il corpo dell'e-mail usando il setBody metodo.

// Imposta il messaggio $ "Body" di testo normale-> setBody ("Questo è il corpo del testo in chiaro del messaggio. \ NGrazie, \ nAdmin");

Se si desidera impostare la versione HTML del messaggio, è possibile utilizzare il AddPart metodo, come mostrato nello snippet seguente. Come puoi vedere, stiamo usando $ cid per fare riferimento all'immagine che abbiamo incorporato in precedenza.

// Imposta un messaggio $ "Body" -> addPart ('Questa è la versione HTML del messaggio.
Esempio di immagine incorporata:

Grazie,
Admin ',' text / html ');

Invia il messaggio!

Finalmente, useremo il inviare metodo dell'oggetto Mailer per inviare l'email.

// Invia il messaggio $ result = $ mailer-> send ($ message);

Prova a eseguire lo script e dovresti ricevere un'email! Fatemi sapere nella sezione commenti se avete problemi.

Conclusione

Oggi abbiamo esaminato una delle librerie PHP più popolari per l'invio di e-mail: Swift Mailer. Con questa libreria, puoi facilmente inviare e-mail dai tuoi script PHP.

Sentiti libero di pubblicare i tuoi pensieri e le tue domande usando il modulo sottostante.