Het verzenden van e-mails is cruciaal voor elke webapplicatie. Meestal wordt een e-mail verzonden om de gebruiker op de hoogte te stellen van een activiteit die op de site heeft plaatsgevonden, bijvoorbeeld wanneer er updates zijn gemaakt of nieuwe vrienden zijn gevonden. In deze korte zelfstudie laat ik u zien hoe u snel e-mails kunt verzenden met Gmail vanuit een Laravel-voorbeeldtoepassing door de functionaliteit uit te breiden die we hebben gebouwd in mijn laatste zelfstudie, Authentication With Laravel 4.
Dus we nemen die authenticatietoepassing (u kunt de broncode van de vorige zelfstudie downloaden op Github om u een startpunt te geven) die we eindigden met de vorige keer en een nieuwe functie toevoegen, zodat wanneer een gebruiker zich registreert voor de site, we stuur ze een e-mail ter bevestiging en verwelkom ze bij de app!
Voordat we e-mails met Laravel 4 kunnen verzenden, moeten we de app / config / mail.php
het dossier. In dit bestand kunnen we de volgende opties instellen:
Keuze | Omschrijving |
bestuurder | Het verzendstuurprogramma dat u wilt gebruiken. Standaard is dit ingesteld op SMTP, maar u kunt dit ook wijzigen om de PHP-mailfunctie of Sendmail te gebruiken. |
gastheer | Dit is het hostadres van uw SMTP-server. |
haven | Uw SMTP-poort. |
van | Hiermee kunt u het veld van in uw e-mail instellen, zodat alle e-mails vanaf hetzelfde adres worden verzonden. |
encryptie | Dit is het coderingsprotocol dat wordt gebruikt wanneer e-mails worden verzonden. |
gebruikersnaam | Dit is je SMTP-gebruikersnaam. |
wachtwoord | Dit is uw SMTP-wachtwoord. |
Verzend mail | Dit is het pad naar de plaats waar Sendmail op de server kan worden gevonden, wanneer het sendmail-stuurprogramma wordt gebruikt. |
doen alsof | Indien ingesteld op waar , e-mails worden in een logbestand vastgelegd in plaats van een echt e-mailbericht te verzenden. |
Voor deze zelfstudie ga ik Gmail gebruiken om mijn e-mailberichten te verzenden omdat het super eenvoudig te gebruiken is. Alles wat u nodig hebt om e-mail te verzenden met Gmail, is om een actief Gmail-account te hebben, met een gebruikersnaam en wachtwoord. Ik zal je al het andere geven. Laten we onze bewerken app / config / mail.php
bestand om er ongeveer zo uit te zien (ik heb de opmerkingen verwijderd om de code compacter te maken):
return array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => 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 ',' pretenderen '=> false,);
Hier heb ik de bestuurder
ingesteld op smtp
. Ik heb de gastheer
gebruiken smtp.gmail.com
wat de Gmail-SMTP-server is. Ik heb de haven
naar 587
, de van
naar een nep e-mailadres dat geschikt is voor onze toepassing. Ik verliet de encryptie
ingesteld op tls
en tot slot wil je dan je eigen Gmail invoeren gebruikersnaam
en wachtwoord
voor uw account en vertrek doen alsof
ingesteld op vals
.
Voor deze toepassing willen we, wanneer een gebruiker zich met succes registreert, een e-mail sturen om deze op de site te verwelkomen. Het verzenden van e-mails met Laravel gaat via de Mail :: send ()
methode. Hier is een klein codefragment, bijvoorbeeld:
Mail :: send ('folder.view', $ data, function ($ message) $ message-> to ('registered-user @ gmail. Com', 'Jon Doe') -> onderwerp ('Welcome to the Laravel 4 Auth App! '););
Het eerste argument is het weergavebestand dat we willen gebruiken om ons e-mailbericht op te maken. Het tweede argument is alle gegevens die we willen doorgeven aan dat weergavebestand. Het derde argument is een sluiting die a accepteert $ message
object dat we kunnen gebruiken om de mailer te vertellen aan wie we de e-mail sturen en wat het onderwerp van deze e-mail zal zijn. In deze afsluiting kunt u ook andere opties opgeven, zoals bijlagen, enz. Hiermee wordt de e-mail naar de gebruiker verzonden.
Best gemakkelijk, toch??
Laten we nu onze wijzigen UsersController
's postCreate ()
actie ondernemen en nemen wat we hebben geleerd over het verzenden van e-mails om een welkomstbericht per e-mail te sturen naar onze gebruikers, wanneer ze zich registreren voor de app.
Binnen onze postCreate ()
het optreden van als
verklaring, waarin we controleren of de validatie is verstreken, direct nadat we de gebruiker in de database hebben opgeslagen, laten we de volgende code toevoegen:
if ($ validator-> passes ()) $ user = new User; $ user-> firstname = Input :: get ('voornaam'); $ user-> lastname = Input :: get ('achternaam'); $ user-> email = Input :: get ('email'); $ user-> password = Hash :: make (Input :: get ('password')); $ Gebruiksvriendelijkheid> save (); Mail :: send ('users.mails.welcome', array ('firstname' => Input :: get ('firstname')), function ($ message) $ message-> to (Input :: get ('email '), Input :: get (' voornaam '). "Input :: get (' achternaam ')) -> onderwerp (' Welkom bij de Laravel 4 Auth App! ');); Return Redirect :: to ( 'users / login') -> with ('message', 'Bedankt voor uw registratie!'); else else return Redirect :: to ('users / register') -> with ('message', 'De volgende fouten zijn opgetreden ') -> withErrors ($ validator) -> withInput ();
Hier hebben we de Mail :: send ()
methode en vertelde het om een te gebruiken users.mails.welcome
bestand bekijken. Vervolgens geven we een array door als de gegevens die beschikbaar zouden moeten zijn in het weergavebestand, in dit geval hebben we zojuist de voornaam van de gebruiker verzonden, met behulp van de Input :: te krijgen ( 'voornaam')
methode. Vervolgens maken we onze afsluiting en stellen deze in om de e-mail naar het e-mailadres van de gebruiker te sturen. We hebben ook de naam ingesteld met de voor- en achternaam van de gebruiker in het formulier. Ten slotte geven we dit een vrij generiek onderwerp (je kunt elk onderwerp gebruiken dat je maar wilt), dus de gebruiker weet waar het allemaal om draait.
Nu moeten we onze maken Welkom
e-mail weergavebestand. Onder app / views / gebruikers
maak een nieuwe map genaamd mails
en binnenin creëer je een nieuw bestand met de naam welcome.blade.php
en voeg de volgende code toe:
Hallo, $ voornaam!
We willen u graag persoonlijk welkom heten in de Laravel 4-verificatieaanvraag. bedankt voor het registreren!
In dit weergavebestand hebben we gewoon wat standaard HTML, met behulp van de $ voornaam
variabele die we hebben doorgegeven als gegevens van onze controller naar de weergave, waarbij de gebruiker wordt verwelkomd in de applicatie. Er is niet veel aan te doen, je kunt je weergavebestanden gebruiken voor e-mails net als voor andere weergaven.
Zorg ervoor dat je je webserver opstart met php artisan serveren
en we kunnen bezoeken localhost: 8000 / users / register
, maak dan een nieuwe gebruiker aan:
... en controleer vervolgens de e-mailaccount van die gebruiker om te controleren of de e-mail succesvol is verzonden:
Perfect! Onze e-mail is verzonden.
En dat is alles wat er is om e-mailberichten te verzenden met Laravel 4 en Gmail. U kunt natuurlijk uw e-mailberichten net zo aanpassen als u de e-mail aantrekkelijker wilt maken.
Dit is nu de meest eenvoudige manier om e-mail met Laravel te verzenden en het kan je app vertragen omdat het de e-mail verzendt, maar je hebt wel andere opties. U zult de mailklasse van Laravel blijven gebruiken, maar in plaats van deze onmiddellijk te verzenden, kunt u uw e-mails in de wachtrij plaatsen om ze op de achtergrond te laten verzenden, zonder uw gebruikers te laten wachten. Maar dit onderwerp kan het best worden bewaard voor een apart artikel.
Raadpleeg de online documentatie voor meer informatie over het verzenden van e-mail met Laravel. Bedankt voor het lezen.