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!
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. |
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
.
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?
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.
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.
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.
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.