Invio di email con Laravel 4 e Gmail

L'invio di email è fondamentale per qualsiasi applicazione web. Di solito, viene inviata una e-mail per informare l'utente di un qualche tipo di attività che si è svolta sul sito, ad esempio, come quando sono stati fatti gli aggiornamenti o quando sono stati trovati nuovi amici. In questo breve tutorial, ti mostrerò come inviare email con Gmail rapidamente da un'applicazione di esempio di Laravel estendendo la funzionalità che abbiamo creato nel mio ultimo tutorial, Authentication With Laravel 4.

Quindi, prenderemo quell'applicazione di autenticazione (puoi scaricare il codice sorgente del tutorial precedente su Github per darti un punto di partenza) che abbiamo terminato con l'ultima volta e aggiungere una nuova funzionalità in modo che ogni volta che un utente si registra per il sito, invieremo loro un'email di conferma, accogliendoli nell'app!


Configurazione della posta

Prima di poter inviare e-mail con Laravel 4, dobbiamo configurare il app / config / mail.php file. In questo file possiamo impostare le seguenti opzioni:

Opzione Descrizione
autista Il driver di posta che vorresti usare. Per impostazione predefinita, questo è impostato su SMTP, ma puoi anche cambiarlo per utilizzare la funzione di posta di PHP o Sendmail.
ospite Questo è l'indirizzo host del tuo server SMTP.
porta La tua porta SMTP.
a partire dal Ciò ti consente di impostare il campo da nella tua e-mail, in modo che tutte le e-mail vengano inviate dallo stesso indirizzo.
crittografia Questo è il protocollo di crittografia che verrà utilizzato ogni volta che vengono inviate e-mail.
nome utente Questo è il tuo nome utente SMTP.
parola d'ordine Questa è la tua password SMTP.
inviare una mail Questo è il percorso verso il quale è possibile trovare Sendmail sul server, quando si utilizza il driver sendmail.
fingere Quando impostato su vero, le e-mail verranno registrate in un file di registro, anziché effettivamente inviare un vero messaggio e-mail.

Invio di posta con Gmail

Per questo tutorial userò Gmail per inviare i miei messaggi di posta elettronica in quanto è semplicissimo da usare. Tutto ciò di cui hai bisogno per inviare posta con Gmail è avere un account Gmail attivo, con nome utente e password. Ti fornirò tutto il resto. Modifichiamo il nostro app / config / mail.php file per assomigliare a questo (ho rimosso i commenti per rendere il codice più compatto):

 return array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'da' => array ('address' => 'authapp @ awesomeauthapp. com ',' name '=>' Awesome Laravel 4 Auth App '),' encryption '=>' tls ',' username '=>' your_gmail_username ',' password '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' fingere '=> falso,);

Qui ho lasciato il autista impostato smtp. Ho impostato il ospite usare smtp.gmail.com che è il server SMTP di Gmail. Ho impostato il porta a 587, il a partire dal a un indirizzo email falso che sembra adatto alla nostra applicazione. Ho lasciato il crittografia impostato tls e infine dovrai inserire il tuo Gmail nome utente e parola d'ordine per il tuo account e vattene fingere impostato falso.


Invio di posta

Codice di esempio

Per questa applicazione, ogni volta che un utente si registra con successo, vogliamo inviare loro un'email di benvenuto al sito. L'invio di e-mail con Laravel viene effettuato utilizzando il comando Mail :: send () metodo. Ecco un piccolo snippet di codice, ad esempio:

 Mail :: send ('folder.view', $ data, function ($ message) $ message-> to ('registered-user @ gmail. Com', 'Jon Doe') -> subject ('Benvenuto nel Laravel 4 Auth App! '););

Il primo argomento è il file di visualizzazione che vorremmo utilizzare per formattare il nostro messaggio di posta elettronica. Il secondo argomento sono tutti i dati che vorremmo passare a quel file di visualizzazione. Il terzo argomento è una chiusura che accetta un $ messaggio oggetto che possiamo usare per dire al mailer a chi stiamo inviando l'e-mail e quale sarà l'oggetto di questa email. In questa chiusura, puoi anche specificare altre opzioni come allegati, ecc. Questo invierà quindi l'e-mail all'utente.

Abbastanza facile, giusto?

Invio di email in caso di registrazione avvenuta con successo

Modifichiamo ora il nostro UsersController'S PostCreate () azione e prendere ciò che abbiamo imparato sull'invio di e-mail per inviare un messaggio di posta elettronica di benvenuto ai nostri utenti, ogni volta che si registrano per l'app.

All'interno del nostro PostCreate () Azioni Se dichiarazione, dove controlliamo se la convalida è passata, subito dopo dove salviamo l'utente nel database, aggiungiamo il seguente codice:

 se ($ validator-> passa ()) $ user = new User; $ user-> firstname = Input :: get ('firstname'); $ user-> lastname = Input :: get ('lastname'); $ user-> email = Input :: get ('email'); $ user-> password = Hash :: make (Input :: get ('password')); $ User-> save (); Mail :: send ('users.mails.welcome', array ('firstname' => Input :: get ('firstname')), function ($ message) $ message-> to (Input :: get ('email '), Input :: get (' firstname '). ". Input :: get (' lastname ')) -> subject (' Benvenuto nell'app Auth di Laravel 4! ');); Return Redirect :: to () 'users / login') -> with ('message', 'Grazie per la registrazione!'); else return Redirect :: to ('users / register') -> with ('message', 'Si sono verificati i seguenti errori ') -> withErrors ($ validator) -> withInput ();

Qui abbiamo chiamato il Mail :: send () metodo e gli ho detto di usare a users.mails.welcome vedi il file. Quindi passiamo in un array come i dati che dovrebbero essere disponibili all'interno del file di visualizzazione, in questo caso abbiamo appena inviato il nome dell'utente, usando il Ingresso :: get ( 'cognome') metodo. Successivamente, creiamo la nostra chiusura e impostiamo questo per inviare l'e-mail all'indirizzo e-mail dell'utente. Impostiamo anche il nome utilizzando il nome e il cognome dell'utente dal modulo. Infine, diamo solo questo a un argomento piuttosto generico (puoi usare qualunque argomento tu voglia), quindi l'utente sa di cosa si tratta.

Creazione del file di visualizzazione e-mail

Ora dobbiamo creare il nostro benvenuto file di visualizzazione email. Sotto app / views / utenti crea una nuova cartella chiamata mail e al suo interno crea un nuovo file chiamato welcome.blade.php e aggiungi il seguente codice:

 

Ciao, $ firstname!

Desideriamo darti il ​​benvenuto personalmente all'Applicazione di autenticazione di Laravel 4. grazie per la registrazione!

In questo file di visualizzazione abbiamo solo un codice HTML di base, usando il $ firstname variabile che abbiamo passato come dati dal nostro controller alla vista, dando il benvenuto all'utente all'applicazione. Non c'è molto da fare, puoi usare i tuoi file di visualizzazione per le email proprio come fai per qualsiasi altra vista.

Proviamoci

Assicurati di avviare il tuo server web usando servire php artigianale e possiamo visitare localhost: 8000 / utenti / registro, quindi crea un nuovo utente:


... e poi controlla l'account di posta elettronica dell'utente per verificare che l'email sia stata inviata con successo:


Perfezionare! La nostra email è stata inviata.


In conclusione

E questo è tutto ciò che c'è da inviare messaggi e-mail con Laravel 4 e Gmail. Ovviamente puoi personalizzare i tuoi messaggi e-mail quanto vuoi rendere la posta più attraente.

Ora questo è il modo più semplice per inviare posta con Laravel e può rallentare la tua app, poiché invia l'email, ma hai altre opzioni. Continuerai a utilizzare la classe di posta di Laravel, ma invece di inviarla immediatamente, puoi mettere in coda le tue e-mail per farle spedire in background, senza far aspettare i tuoi utenti. Ma questo argomento è meglio salvato per un articolo separato.

Per ulteriori informazioni sull'invio di e-mail con Laravel, consultare la documentazione online. Grazie per aver letto.