Sende e-post med Laravel 4 og Gmail

Sende e-post er avgjørende for alle webapplikasjoner. Vanligvis sendes en e-post for å varsle brukeren om noen form for aktivitet som har funnet sted på nettstedet, for eksempel når oppdateringer er gjort, eller når nye venner har blitt funnet. I denne korte opplæringen viser jeg deg hvordan du sender e-post med Gmail raskt fra et Laravel-prøveprogram ved å utvide funksjonaliteten som vi bygde i min siste opplæring, godkjenning med Laravel 4.

Så vi tar den autentiseringsprogrammet (du kan laste ned kildekoden for den tidligere opplæringen på Github for å gi deg et utgangspunkt) som vi endte med sist gang, og legge til en ny funksjon slik at når en bruker registrerer for nettstedet, sender dem en bekreftelses-e-post, og ønsker dem velkommen til appen!


E-postkonfigurasjon

Før vi kan sende e-post med Laravel 4, må vi konfigurere app / config / mail.php fil. I denne filen kan vi angi følgende alternativer:

Alternativ Beskrivelse
sjåfør Den postdriver du vil bruke. Som standard er dette satt til SMTP, men du kan også endre det for å bruke PHPs-funksjonen eller Sendmail i stedet.
vert Dette er SMTP-serverens vertsadresse.
havn Din SMTP-port.
fra Dette lar deg sette fra feltet i e-posten din, slik at alle e-postmeldinger sendes fra samme adresse.
kryptering Dette er krypteringsprotokollen som vil bli brukt når e-postmeldinger sendes.
brukernavn Dette er ditt SMTP brukernavn.
passord Dette er ditt SMTP-passord.
sendmail Dette er banen til hvor Sendmail kan bli funnet på serveren, når du bruker sendmail-driveren.
late som Når satt til ekte, e-postmeldinger vil bli logget til en loggfil, i stedet for å sende en ekte e-postmelding.

Sende e-post med Gmail

For denne opplæringen skal jeg bruke Gmail til å sende mine e-postmeldinger som det er super enkelt å bruke. Alt du trenger for å sende e-post med Gmail, er å ha en aktiv Gmail-konto, med brukernavn og passord. Jeg gir deg alt annet. La oss redigere vår app / config / mail.php fil for å se noe slikt ut (jeg fjernet kommentarene for å gjøre koden mer kompakt):

 returnere array ('driver' => 'smtp', 'vert' => 'smtp.gmail.com', 'port' => 587, 'fra' => array ('adresse' => 'authapp @ awesomeauthapp. com ',' navn '=>' Awesome Laravel 4 Auth App '),' kryptering '=>' tls ',' brukernavn '=>' your_gmail_username ',' passord '=>' your_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' late '=> false,);

Her har jeg forlatt sjåfør satt til smtp. Jeg satte vert å bruke smtp.gmail.com som er Gmail's SMTP-server. Jeg satte havn til 587, de fra til en falsk e-postadresse som lyder passende for vår søknad. Jeg forlot kryptering satt til tls og til slutt vil du da legge inn i din egen Gmail brukernavn og passord for kontoen din og gå late som satt til falsk.


Sende e-post

Eksempelkode

For denne applikasjonen, når en bruker er vellykket registrerer, vil vi sende dem en e-post som ønsker dem velkommen til nettstedet. Sende e-post med Laravel er gjort ved å bruke Mail :: send () metode. Her er en liten kodebit, for eksempel:

 Mail :: send ('folder.view', $ data, funksjon ($ melding) $ message-> til ('registered-user @ gmail. Com', 'Jon Doe') -> emne ('Velkommen til Laravel 4 Auth App! '););

Det første argumentet er visningsfilen vi vil bruke for å formatere vår e-postmelding. Det andre argumentet er data som vi ønsker å sende til den visningsfilen. Det tredje argumentet er et lukke som aksepterer a $ melding objekt som vi kan bruke til å fortelle e-postøren hvem vi sender e-post til og hva emnet for denne e-posten vil være. I denne lukkingen kan du også angi andre alternativer, for eksempel vedlegg, etc. Dette sender deretter e-posten til brukeren.

Ganske enkelt riktig?

Sende e-post etter vellykket registrering

La oss nå endre vår UsersController's postCreate () handling og ta det vi har lært om å sende e-postmeldinger for å sende en velkommen e-postmelding til brukerne våre, når de registrerer seg for appen.

Innenfor vår postCreate () handlingens hvis uttalelse, der vi kontrollerer om valideringen er passert, rett etter hvor vi lagrer brukeren i databasen, la oss legge til i følgende kode:

 hvis ($ validator-> passerer ()) $ user = new User; $ user-> firstname = Input :: get ('firstname'); $ user-> lastname = Input :: get ('etternavn'); $ user-> email = Input :: get ('email'); $ user-> password = Hash :: make (Input :: get ('passord')); $ Bruker-> Lagre (); Mail :: send ('users.mails.welcome', array ('firstname' => Input :: få ('fornavn')), funksjon ($ melding) $ message-> til (Input :: get '), Input :: get (' firstname '). ". Input :: get (' lastname ')) -> emne (' Velkommen til Laravel 4 Auth App! ');); Returnere Omdirigering :: til 'bruker / logg inn') -> med ('melding', 'Takk for registrering!'); else return Omdirigere :: til ('brukere / register') -> med ('melding', 'Følgende feil oppstod ') -> withErrors ($ validator) -> withInput ();

Her har vi kalt Mail :: send () metode og fortalte det å bruke a users.mails.welcome se fil. Vi sender så i en matrise som dataene som burde være tilgjengelige i visningsfilen, i dette tilfellet sendte vi nettopp i brukernavnet, ved hjelp av Input :: får ( 'fornavn') metode. Deretter lager vi nedleggelsen vår og angir dette for å sende e-posten til brukerens e-postadresse. Vi stiller også navnet med brukerens fornavn og etternavn fra skjemaet. Til slutt gir vi bare dette et ganske generisk emne (du kan bruke hvilket som helst emne du vil), så brukeren vet hva alt oppstyret handler om.

Opprette e-postvisningfilen

Nå må vi lage vår Velkommen e-postvisning. Under app / visninger / brukere opprett en ny mappe som heter post og innsiden av den oppretter en ny fil som heter welcome.blade.php og legg til i følgende kode:

 

Hei, $ firstname!

Vi ønsker deg personlig velkommen til Laravel 4 Authentication Application. takk for din registrering!

I denne visningsfilen har vi bare noen grunnleggende HTML, ved hjelp av $ firstname variabel som vi passerte som data fra vår kontroller til visningen, velkommen brukeren til applikasjonen. Det er ikke mye i det, du kan bruke visningsfilene dine for e-post, akkurat som du gjør for en annen visning.

La oss prøve det ut

Sørg for å starte opp din webserver ved hjelp av php artisan tjene og vi kan besøke localhost: 8000 / brukere / register, og opprett en ny bruker:


... og deretter sjekke brukerens e-postkonto for å bekrefte at e-posten ble sendt vellykket:


Perfekt! Vår e-post ble sendt.


For å konkludere

Og det er alt som er å sende e-postmeldinger med Laravel 4 og Gmail. Du kan selvfølgelig tilpasse e-postmeldingene dine så mye som du vil gjøre e-posten mer tiltalende.

Nå er dette den mest grunnleggende måten å sende e-post med Laravel, og det kan bremse appen din, siden den sender e-posten, men du har andre alternativer. Du fortsetter å bruke Laravels e-postklass, men i stedet for å sende den umiddelbart, kan du kjøre e-postene dine for å få dem sendt ut i bakgrunnen, uten at brukerne venter. Men dette emnet blir best lagret for en egen artikkel.

For mer informasjon om sending av e-post med Laravel, sjekk ut online dokumentasjonen. Takk for at du leste.