Skickar e-post med Laravel 4 & Gmail

Att skicka e-post är avgörande för alla webbapplikationer. Vanligtvis skickas ett mail för att meddela användaren om någon typ av aktivitet som har ägt rum på webbplatsen, till exempel när uppdateringar har gjorts eller när nya vänner har hittats. I denna korta handledning visar jag dig hur du skickar e-postmeddelanden med Gmail snabbt från en Laravel-provansökan genom att utvidga funktionaliteten som vi byggde i min senaste handledning, Autentisering med Laravel 4.

Så vi tar den autentiseringsapplikationen (du kan ladda ner den tidigare handledningens källkod på Github för att ge dig en startpunkt) som vi slutade med förra gången och lägga till en ny funktion så att när en användare registrerar för sajten skickar dem ett bekräftelsemail och välkomnar dem till appen!


Postkonfiguration

Innan vi kan skicka e-post med Laravel 4 måste vi konfigurera app / config / mail.php fil. I den här filen kan vi ange följande alternativ:

Alternativ Beskrivning
förare Den postförare som du vill använda. Som standard är detta inställt på SMTP, men du kan också ändra det för att använda PHPs-funktionen eller Sendmail istället.
värd Det här är din SMTP-serverns värdadress.
hamn Din SMTP-port.
från Det här låter dig ställa in fältet i ditt e-postmeddelande, så att alla e-postmeddelanden skickas från samma adress.
kryptering Detta är krypteringsprotokollet som ska användas när e-postmeddelanden skickas.
Användarnamn Detta är ditt SMTP användarnamn.
Lösenord Detta är ditt SMTP-lösenord.
skicka brev Det här är sökvägen till Where Sendmail finns på servern när du använder sendmail-drivrutinen.
låtsas När den är inställd på Sann, e-postmeddelanden loggas till en loggfil, snarare än att skicka ett riktigt e-postmeddelande.

Skickar e-post med Gmail

För den här handledningen ska jag använda Gmail för att skicka mina e-postmeddelanden eftersom det är super enkelt att använda. Allt du behöver för att skicka mail med Gmail är att ha ett aktivt Gmail-konto med ett användarnamn och lösenord. Jag ska förse dig med allt annat. Låt oss redigera vår app / config / mail.php fil för att se något så här (jag tog bort kommentarerna för att göra koden mer kompakt):

 returnera array ('driver' => 'smtp', 'värd' => 'smtp.gmail.com', 'port' => 587, 'från' => array ('adress' => 'authapp @ awesomeauthapp. com ',' namn '=>' Awesome Laravel 4 Auth App '),' kryptering '=>' tls ',' användarnamn '=>' ditt_gmail_username ',' password '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' låtsas '=> falskt,);

Här har jag lämnat förare satt till smtp. Jag satte värd att använda smtp.gmail.com som är Gmails SMTP-server. Jag satte hamn till 587, de från till en falsk e-postadress som låter passande för vår ansökan. Jag lämnade kryptering satt till tls och äntligen vill du ange din egen Gmail Användarnamn och Lösenord för ditt konto och lämna låtsas satt till falsk.


Skickar e-post

Exempel Kod

För den här applikationen, närhelst en användare lyckas registrera, vill vi skicka dem ett mail som välkomnar dem till webbplatsen. Skicka e-post med Laravel görs med hjälp av Mail :: skicka () metod. Här är ett litet kodstycke, till exempel:

 Mail :: Skicka ('folder.view', $ data, funktion ($ message) $ message-> till ('registered-user @ gmail. Com', 'Jon Doe') -> ämne ('Välkommen till Laravel 4 Auth App! '););

Det första argumentet är den visningsfil vi skulle vilja använda för att formatera vårt e-postmeddelande. Det andra argumentet är data som vi skulle vilja överföra till den visningsfilen. Det tredje argumentet är en nedläggning som accepterar a $ message objekt som vi kan använda för att berätta för e-posten vem vi skickar e-post till och vad ämnet för det här e-postmeddelandet kommer att vara. I den här nedläggningen kan du också ange andra alternativ, t.ex. bilagor etc. Det skickar sedan e-postmeddelandet till användaren.

Ganska lätt rätt?

Skicka e-post efter framgångsrik registrering

Låt oss nu ändra vår UsersController's postCreate () åtgärd och ta det vi har lärt oss om att skicka e-postmeddelanden för att skicka ett välkomstmeddelande till våra användare, när de registrerar sig för appen.

Inom vårt postCreate () åtgärder om uttalande, där vi kontrollerar om valideringen har passerat, strax efter det vi lagrar användaren i databasen, låt oss lägga till följande kod:

 om ($ validator-> passerar ()) $ user = new User; $ user-> firstname = Input :: get ('firstname'); $ user-> lastname = Input :: get ('efternamn'); $ user-> email = Input :: get ('email'); $ user-> password = Hash :: make (Input :: get ('lösenord')); $ User-> save (); Mail :: send ('users.mails.welcome', array ('firstname' => Input :: get ('firstname')), funktion ($ meddelande) $ message-> to (Input :: get '), Input :: get (' firstname '). ". Input :: get (' efternamn ')) -> ämne (' Välkommen till Laravel 4 Auth App! ');), Returnera Omdirigera :: till 'användare / inloggning') -> med ('meddelande', 'Tack för att du registrerade!'); else return Omdirigera :: till ') -> withErrors ($ validator) -> withInput ();

Här har vi kallat Mail :: skicka () metod och berättade för att använda a users.mails.welcome visa fil. Vi skickar sedan i en array som de data som ska finnas tillgängliga i visningsfilen, i det här fallet skickade vi just i användarens förnamn med hjälp av Input :: få (förnamn) metod. Därefter skapar vi vår stängning och ställer in det här för att skicka e-postmeddelandet till användarens e-postadress. Vi ställer även namnet med användarens för- och efternamn från formuläret. Slutligen ger vi bara ett ganska generiskt ämne (du kan använda vilket ämne du vill), så användaren vet vad all väsen handlar om.

Skapa e-postvyfilen

Nu behöver vi skapa vår Välkommen e-postvy. Under app / visningar / användare skapa en ny mapp som heter postmeddelanden och inuti det skapar en ny fil som heter welcome.blade.php och lägg till i följande kod:

 

Hej, $ firstname!

Vi vill gärna välkomna dig till Laravel 4 Authentication Application. tack för din registrering!

I den här visningsfilen har vi bara grundläggande HTML, med hjälp av $ firstname variabel som vi passerade som data från vår controller till vyn, välkomnar användaren till applikationen. Det finns inte mycket med det, du kan använda dina visningsfiler för e-postmeddelanden precis som du gör för någon annan vy.

Låt oss försöka det

Se till att du startar din webbserver med php artisan tjäna och vi kan besöka localhost: 8000 / användare / register, Skapa sedan en ny användare:


... och kontrollera sedan användarens e-postkonto för att verifiera att e-postmeddelandet skickades framgångsrikt:


Perfekt! Vår e-post skickades.


Sammanfattningsvis

Och det är allt som finns för att skicka e-postmeddelanden med Laravel 4 och Gmail. Du kan självklart anpassa dina e-postmeddelanden så mycket som du vill göra mailet mer tilltalande.

Nu är det här det enklaste sättet att skicka mail med Laravel och det kan sakta ner din app, eftersom den skickar e-postmeddelandet, men du har andra alternativ. Du fortsätter att använda Laravels postklass, men istället för att skicka det direkt kan du köa dina e-postmeddelanden så att de skickas ut i bakgrunden, utan att dina användare väntar. Men det här ämnet sparas bäst för en separat artikel.

För mer information om att skicka e-post med Laravel kolla in dokumentationen online. Tack för att du läser.