Trimiterea de e-mailuri cu Laravel 4 și Gmail

Trimiterea e-mailurilor este crucială pentru orice aplicație web. De obicei, este trimis un e-mail pentru a notifica utilizatorul despre un fel de activitate care a avut loc pe site, de exemplu, cum ar fi când s-au făcut actualizări sau când s-au găsit noi prieteni. În acest tutorial scurt, vă vom arăta cum să trimiteți rapid e-mailuri cu Gmail dintr-o aplicație eșantion Laravel prin extinderea funcționalității pe care am construit-o în ultimul meu tutorial, Autentificare cu Laravel 4.

Deci, vom lua această aplicație de autentificare (puteți descărca codul sursă al tutorialului anterior pe Github pentru a vă oferi un punct de pornire) pe care am terminat-o ultima dată și adăugați o funcție nouă, astfel încât ori de câte ori un utilizator se înregistrează pentru site, noi îi vom trimite un e-mail de confirmare, primind-le la aplicație!


Mail Configuration

Înainte de a putea trimite e-mailuri cu Laravel 4 trebuie să configurați app / config / mail.php fişier. În acest fișier putem seta următoarele opțiuni:

Opțiune Descriere
conducător auto Șoferul de corespondență pe care doriți să îl utilizați. În mod implicit, acest lucru este setat la SMTP, dar îl puteți schimba și pentru a utiliza funcția de mail PHPs sau Sendmail în schimb.
gazdă Aceasta este adresa gazdă a serverului SMTP.
port Portul SMTPs.
din Aceasta vă permite să setați câmpul din câmpul din e-mail, astfel încât toate e-mailurile să fie trimise de la aceeași adresă.
criptare Acesta este protocolul de criptare care va fi folosit ori de câte ori e-mailurile sunt trimise.
nume de utilizator Acesta este numele dvs. de utilizator SMTP.
parola Aceasta este parola dvs. SMTP.
sendmail Aceasta este calea spre locul în care poate fi găsit Sendmail pe server, când se utilizează driverul sendmail.
pretinde Când este setat la Adevărat, e-mailurile vor fi înregistrate într-un fișier jurnal, mai degrabă decât de fapt trimite un mesaj e-mail real.

Trimiterea e-mailului cu Gmail

Pentru acest tutorial, voi folosi Gmail pentru a trimite mesajele mele de e-mail, deoarece este foarte simplu de folosit. Tot ce aveți nevoie pentru a trimite poștă cu Gmail este să aveți un cont Gmail activ, cu un nume de utilizator și o parolă. Vă voi oferi totul. Să ne editați app / config / mail.php fișier pentru a arăta ceva de genul acesta (am eliminat comentariile pentru a face codul mai compact):

 retur array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => ',' name '=>' your_gmail_username ',' password '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' pretend '=> false,);

Aici l-am părăsit conducător auto setat la smtp. Am setat gazdă a folosi smtp.gmail.com care este serverul SMTP al Gmail. Am setat port la 587, din la o adresă de e-mail falsă care sună potrivit pentru aplicația noastră. Am plecat criptare setat la tls și în cele din urmă veți dori să introduceți în propriul Gmail nume de utilizator și parola pentru contul dvs. și plecați pretinde setat la fals.


Trimiterea e-mailului

Cod exemplu

Pentru această aplicație, ori de câte ori un utilizator se înregistrează cu succes, vrem să le trimitem un e-mail prin care să le primim pe site. Trimiterea de e-mailuri cu Laravel se face folosind Mail :: trimite () metodă. Iată un mic fragment de cod, de exemplu în scopuri:

 Mail :: trimiteți ('folder.view', $ date, function ($ message) $ message-> to ('registered-user @ gmail.com', 'Jon Doe' 4 Auth App! '););

Primul argument este fișierul de vizualizare pe care dorim să îl folosim pentru a formata mesajul nostru de e-mail. Al doilea argument este orice date pe care dorim să le transmitem fișierului de vizualizare respectiv. Al treilea argument este o închidere care acceptă a $ mesaj obiect pe care îl putem folosi pentru a spune mailerului căruia îi trimitem e-mailul și care va fi subiectul acestui e-mail. În această închidere, puteți specifica și alte opțiuni, cum ar fi atașamentele, etc. Aceasta va trimite apoi e-mailul utilizatorului.

Destul de ușor?

Trimiterea de e-mailuri după înregistrarea reușită

Să ne modificăm acum UsersController„s postCreate () acțiune și luați ceea ce am învățat despre trimiterea de e-mailuri pentru a trimite un mesaj de poștă electronică de bun venit utilizatorilor noștri, de fiecare dată când se înregistrează pentru aplicație.

În cadrul nostru postCreate () acțiunea lui dacă declarație, unde verificăm dacă validarea a trecut, imediat după ce am salvat utilizatorul în baza de date, să adăugăm următorul cod:

 dacă ($ validator-> passes ()) $ user = utilizator nou; $ user-> firstname = Intrare :: get ('firstname'); $ user-> lastname = Intrare :: get ('lastname'); $ user-> email = intrare :: get ('email'); $ user-> parola = Hash :: make (Input :: get ('parola')); $ User-> Salvare (); Mail :: trimite ('users.mails.welcome', array ('firstname' => Input :: get ('firstname')), function ($ message) $ message-> '), Input :: get (' firstname '). Intrare :: get (' lastname ')) -> subiect (' Welcome to Laravel 4 Auth App! Utilizatori / login) -> cu ('mesaj', 'Vă mulțumim pentru înregistrare!'); else return Redirecționare :: la (' ') -> cuErrors ($ validator) -> cuInput ();

Aici am sunat Mail :: trimite () și i-au spus să folosească a users.mails.welcome Vezi fișierul. Apoi, trecem într-o matrice ca date care ar trebui să fie disponibile în fișierul de vizualizare, în acest caz tocmai am trimis numele de utilizator, utilizând Intrare :: get ( 'firstname') metodă. Apoi, vom crea închiderea noastră și vom seta această opțiune pentru a trimite e-mailul la adresa de e-mail a utilizatorului. De asemenea, setăm numele utilizând numele și prenumele utilizatorului din formular. În cele din urmă, dăm doar un subiect destul de generic (puteți folosi orice subiect doriți), astfel încât utilizatorul să știe despre ce e vorba.

Crearea fișierului de vizualizare a e-mailului

Acum trebuie să ne creăm Bine ati venit fișier de vizualizare a e-mailului Sub app / views / utilizatori creați un nou folder numit mail-uri și în interiorul acestuia creează un nou fișier numit welcome.blade.php și adăugați în următorul cod:

 

Bună, $ firstname!

Ne-ar plăcea să vă întâmpinăm personal la aplicația de autentificare Laravel 4. Multumim pentru inregistrare!

În acest fișier de vizualizare avem doar câteva coduri de bază, folosind $ firstname variabilă pe care am trecut-o ca date de la controlorul nostru spre vizualizare, salutând utilizatorul la aplicație. Nu ai prea multe lucruri, poți să folosești fișierele de vizualizare pentru e-mailuri ca și tine pentru orice altă vizualizare.

Să încercăm

Asigurați-vă că ați pornit serverul dvs. web folosind php artisan servi și putem vizita localhost: 8000 / utilizatori / registru, apoi creați un utilizator nou:


... și apoi verificați contul de e-mail al utilizatorului pentru a verifica dacă e-mailul a fost trimis cu succes:


Perfect! Emailul nostru a fost trimis.


In concluzie

Și asta e totul pentru a trimite mesaje de poștă electronică cu Laravel 4 și Gmail. Puteți personaliza, bineînțeles, mesajele dvs. de e-mail la fel de mult ca și cum ați dori să faceți poșta mai atrăgătoare.

Acum, acesta este cel mai simplu mod de a trimite e-mailuri cu Laravel și vă poate încetini aplicația în jos, deoarece trimite e-mailul, dar aveți și alte opțiuni. Veți continua să utilizați clasa de e-mail a lui Laravel, dar în loc să o trimiteți imediat, puteți să vă coadă e-mailurile pentru a le trimite în fundal, fără ca utilizatorii dvs. să aștepte. Dar acest subiect este cel mai bine salvat pentru un articol separat.

Pentru mai multe informații despre trimiterea de e-mail cu Laravel consultați documentația online. Vă mulțumim pentru lectură.

Cod