Slik sender du e-post i Laravel

I denne artikkelen skal vi utforske Mail API i Laravel web-rammeverket. Laravel utnytter det populære SwiftMailer-biblioteket, som er enkelt å bruke og leveres med en rekke e-postdrivere å velge mellom. I de siste stadiene av artikkelen vil vi gjennomgå en grundig demonstrasjon av begreper som diskuteres i første halvdel av artikkelen.

Sette opp forutsetningene

Laravel implementerer en wrapper på toppen av SwiftMailer-biblioteket som gjør e-postbehandling veldig enkelt å konfigurere og bruke på samme tid. Du kan finne standard e-postinnstillinger på config / mail.php.

 env ('MAIL_DRIVER', 'sendmail'), / * | ------------------------------------ -------------------------------------- | SMTP vertsadresse | ---------------------------------------------- ---------------------------- | | Her kan du angi vertsadressen til SMTP-serveren som brukes av din | applikasjoner. Et standardalternativ er gitt som er kompatibelt med | Mailgun-posttjenesten som gir pålitelige leveranser. | * / 'host' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | SMTP vertsport | ---------------------------------------------- ---------------------------- | | Dette er SMTP-porten som brukes av søknaden din, for å levere e-post til | brukere av søknaden. Som verten har vi satt denne verdien til | Hold deg kompatibel med Mailgun-e-postprogrammet som standard. | * / 'port' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- | Global "From" Adresse | -------------------------------------------- ------------------------------ | | Du kan ønske at alle e-postmeldinger sendt av søknaden din skal sendes fra | samme adresse. Her kan du angi et navn og en adresse som er | brukes globalt for alle e-postmeldinger som sendes av søknaden din. | * / 'fra' => ['adresse' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'name' => env ('MAIL_FROM_NAME', 'Eksempel'),], / * | - -------------------------------------------------- ----------------------- | E-postkrypteringsprotokoll | -------------------------------------------- ------------------------------ | | Her kan du spesifisere krypteringsprotokollen som skal brukes når | søknaden sender e-postmeldinger. En fornuftig standard ved hjelp av | Sikkerhetsprotokoll for transportlag skal gi god sikkerhet. | * / 'encryption' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- | SMTP Server Brukernavn | ---------------------------------------------- ---------------------------- | | Hvis din SMTP-server krever et brukernavn for godkjenning, bør du | sett det her. Dette blir vant til å autentisere med serveren din på | forbindelse. Du kan også angi "passord" -verdien under denne. | * / 'brukernavn' => env ('MAIL_USERNAME'), 'passord' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Sendmail System Path | ---------------------------------------------- ---------------------------- | | Når du bruker "sendmail" -driveren for å sende e-post, må vi vite | banen til hvor Sendmail bor på denne serveren. En standardbane har | blitt gitt her, som vil fungere godt på de fleste av systemene dine. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- | Markdown Mail Settings | ---------------------------------------------- ---------------------------- | | Hvis du bruker Markdown-basert e-postgjenoppretting, kan du konfigurere din | tema og komponentbaner her, slik at du kan tilpasse designen | av e-postene. Eller du kan bare holde fast med Laravel-standardene! | * / 'markdown' => ['theme' => 'default', 'paths' => [resource_path ('views / vendor / mail'),],],]; 

Når det gjelder å sende mails, støtter Laravel forskjellige drivere å velge mellom. Som du kan se, er standard MAIL_DRIVER er satt til smtp.

Hvis du skal bruke smtp sjåfør å sende e-post, så er du også pålagt å angi andre relaterte innstillinger som MAIL_HOST, MAIL_PORT, MAIL_ENCRYPTION, MAIL_USERNAME, og MAIL_PASSWORD.

På den annen side, hvis du skal bruke sendmail sjåfør, så vil du sørge for at sendmail systembanen er satt til riktig verdi i config / mail.php fil.

Du kan også stille inn fra adresse som vil bli brukt mens du sender e-post under fra nøkkel. Og til slutt, hvis du vil bruke Markdown-basert e-postgjenoppretting, kan du angi disse innstillingene under Markdown nøkkel.

Kirsebær på toppen er at du også kan bruke tredjeparts e-postleverandører som Mailgun, Mandrill, SES og SparkPost. Hvis du bruker en av disse tjenestene, må du sørge for at du angir de tilsvarende innstillingene i config / services.php fil.

Så det var en grunnleggende introduksjon til e-post API-relaterte innstillinger i Laravel. Fra neste avsnitt og videre går vi gjennom et egendefinert eksempel som viser deg hvordan du sender e-post.

Opprett Mailable Class

I denne delen lager vi mailable-klassen, som vil bli brukt til å sende e-post. Den mailable-klassen er ansvarlig for å sende e-postmeldinger ved hjelp av en mailer som er konfigurert i config / mail.php fil. Faktisk gir Laravel allerede en håndverkskommando som lar oss lage en basemal.

php artisan make: mail DemoEmail

Det skal opprette en tom e-postmal på app / Mail / DemoEmail.php, som vist i følgende utdrag.

visning ( 'view.name'); 

La oss erstatte innholdet til den filen med følgende.

demo = $ demo;  / ** * Bygg meldingen. * * @return $ this * / public function build () return $ this-> fra ([email protected]) -> view ('mails.demo') -> tekst ('mails.demo_plain') - > med (['testVarOne' => '1', 'testVarTwo' => '2',]) -> vedlegg (public_path ('/ images'). '/ demo.jpg', ['as' => ' demo.jpg ',' mime '=>' image / jpeg ',]); 

Det er to viktige metoder som implementerer klassen generelt-__construct og bygge. De __construct Metoden brukes til å initialisere objekter du skal bruke i e-postmalen. På den annen side, bygge Metoden brukes til å initialisere flere e-postspesifikke verdier som fra, vise mal, vedlegg og lignende.

I vårt tilfelle har vi passert $ demo objekt som en konstruktør argument, og det er tildelt til demo offentlig eiendom.

I bygge metode, vi har initialisert en e-postspesifikk konfigurasjon.

  • De fra Brukes til å angi en e-postadresse som skal brukes som en fraadresse.
  • Bruker utsikt Metode, du kan angi e-postmalen som skal brukes mens du sender en e-post ved hjelp av denne mailable. I vårt tilfelle har vi satt den til mails.demo, og det betyr at du må opprette en visningsmalfil på ressurser / synspunkter / post / demo.blade.php.
  • Deretter tekst Metoden brukes til å sette opp tekstversjonen av en e-postmal.
  • Som vi nettopp har diskutert, __construct Metoden brukes til å sette opp objekter som skal brukes i e-postmalen, du kan også bruke med Metode som lar deg sette visningsdataene til en melding.
  • Deretter har vi brukt feste Metode for å legge ved et bilde med en melding.

Selvfølgelig må vi opprette e-postmaler som vi skal bruke mens du sender e-post. Gå videre og lag en fil ressurser / synspunkter / post / demo.blade.php som vist i følgende utdrag.

Hallo $ demo-> mottaker, 

Dette er en demo-e-post for testformål! Det er også HTML-versjonen.

Demo objekt verdier:

Demo One: $ demo-> demo_one

Demo to: $ demo-> demo_two

Verdier bestått av Med metode:

testVarOne: $ testVarOne

testVarTwo: $ testVarTwo

Takk skal du ha,
$ demo-> avsender

La oss også lage den enkle tekstversjonen av den filen på ressurser / synspunkter / post / demo_plain.blade.php.

Hei $ demo-> mottaker, Dette er en demo-e-post til testformål! Det er også HTML-versjonen. Demo-objektverdier: Demo One: $ demo-> demo_one Demo To: $ demo-> demo_two Verdier bestått av Med metode: testVarOne: $ testVarOne testVarOne: $ testVarOne Takk, $ demo-> avsender

Så det var mailable klassen til din disposisjon, og vi har ikke gjort ennå som vi trenger å bruke Post fasade til å sende e-post. I neste del vil vi undersøke hvordan du kan bruke Post Fasade for å sende e-post med DemoEmail Mailable klasse som nettopp ble opprettet i denne delen.

Wrapping Up

I denne delen skal vi lage et eksempel for å vise hvordan du kan bruke mailable klassen som ble opprettet i den siste delen.

La oss lage en kontrollerfil på app / Http / kontrollere / MailController.php med følgende innhold.

demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Two Value'; $ objDemo-> sender = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: til ("[email protected]") -> send (ny DemoEmail ($ objDemo)); 

Det er viktig å merke seg at vi har tatt med Belyse \ Support \ Fasader \ Mail Fasade som vil bli brukt til å sende en e-post. I sende Metode, følgende erklæring er ansvarlig for å sende en epost ved å initialisere App \ Mail \ DemoEmail Mailable i første omgang.

Mail :: til ("[email protected]") -> send (ny DemoEmail ($ objDemo));

De til metode av Belyse \ Support \ Fasader \ Mail Facade returnerer en forekomst av \ Illuminate \ Mail \ PendingMail klasse, som allerede inneholder en passende mailer konfigurert i config / mail.php fil.

Og til slutt bruker vi sende metode av \ Illuminate \ Mail \ PendingMail klasse som sender en faktisk e-post.

For å teste det, la vi legge til en tilhørende rute i ruter / web.php fil.

// Email relaterte ruter Rute :: få ('mail / send', 'MailController @ send');

Og med det på plass, kan du kjøre http://your-laravel-site.com/mail/send URL for å se om det fungerer som forventet.

På den annen side, hvis du vil teste e-postmaler raskt, uten å sende e-post, er det en bestemmelse i Laravel som lar deg logge alle utgående e-poster.

For å oppnå det må du sette verdien av MAIL_DRIVER til Logg i config / mail.php fil. Deretter kan du kjøre den nevnte nettadressen og inspisere loggfilen for å sjekke om e-postmalen ble logget der.

Hvis alt går bra, bør du se en e-post som er logget på lagring / logger / laravel.log fil.

Det er ganske mye det så langt som postfunksjonen er bekymret i Laravel, og det konkluderer også denne artikkelen.

Konklusjon

I dag gikk vi gjennom mail-APIen som kommer inn i Laravel, og den støtter også en rekke drivere også.

Fra grunnleggende begreper implementerte vi mailable-klassen som er et viktig element i e-post-API-en i Laravel mens vi flyttet videre. På slutten testet vi også mailable-klassen ved å opprette en tilpasset kontroller for å se om den faktisk fungerer.

Hvis du bare har startet med Laravel eller ser ut til å utvide din kunnskap, nettsted eller søknad med utvidelser, har vi en rekke ting du kan studere i Envato Market.

Jeg vil gjerne vite tilbakemeldingen din i form av spørringer og kommentarer ved å bruke feedet under!