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.
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.
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.
fra
Brukes til å angi en e-postadresse som skal brukes som en fraadresse.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
.tekst
Metoden brukes til å sette opp tekstversjonen av en e-postmal.__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.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:
Takk skal du ha,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ 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.
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.
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!