I den här artikeln kommer vi att utforska Mail API i Laravel webb ramverket. Laravel utnyttjar det populära SwiftMailer-biblioteket, vilket är lätt att använda och levereras med en mängd olika e-postdrivrutiner att välja mellan. I de senare stegen i artikeln går vi igenom en djupgående demonstration av de begrepp som diskuteras i första halvan av artikeln.
Laravel implementerar ett omslag på toppen av SwiftMailer-biblioteket som gör e-posthanteringen väldigt lätt att konfigurera och använda samtidigt. Du hittar standardinställningarna för e-post på config / mail.php
.
env ('MAIL_DRIVER', 'sendmail'), / * | ------------------------------------ -------------------------------------- | SMTP-värdadress | ---------------------------------------------- ---------------------------- | | Här kan du ange värdadressen för SMTP-servern som används av din | tillämpningar. Ett standardalternativ tillhandahålls som är kompatibelt med | Mailgun-posttjänsten som ger pålitliga leveranser. | * / 'host' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | SMTP-värdporten | ---------------------------------------------- ---------------------------- | | Det här är SMTP-porten som används av din ansökan för att leverera e-post till | användare av ansökan. Liksom värden har vi satt detta värde till | Förbliv kompatibel med Mailgun-e-postprogrammet som standard. | * / 'port' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- | Global "From" Adress | -------------------------------------------- ------------------------------ | | Du kanske vill att alla e-postmeddelanden som skickas av din ansökan ska skickas från | samma adress. Här kan du ange ett namn och en adress som är | används globalt för alla e-postmeddelanden som skickas av din ansökan. | * / 'från' => ['adress' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'namn' => env ('MAIL_FROM_NAME', 'Exempel'),], / * | - -------------------------------------------------- ----------------------- | E-postkrypteringsprotokoll | -------------------------------------------- ------------------------------ | | Här kan du ange krypteringsprotokollet som ska användas när | programmet skickar e-postmeddelanden. En förnuftig standard med | säkerhetsprotokollet för transportlager bör ge stor säkerhet. | * / 'kryptering' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- | Användarnamn för SMTP-servern | ---------------------------------------------- ---------------------------- | | Om din SMTP-server kräver ett användarnamn för autentisering, ska du | sätt det här. Detta blir van vid att autentisera med din server på | förbindelse. Du kan också ange värdet "lösenord" nedanför det här. | * / 'användarnamn' => env ('MAIL_USERNAME'), 'lösenord' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Sendmail System Path | ---------------------------------------------- ---------------------------- | | När du använder "sendmail" -föraren för att skicka e-post, måste vi veta | Vägen till var Sendmail bor på den här servern. En standardväg har | har tillhandahållits här, vilket kommer att fungera bra på de flesta av dina system. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- | Markdown Mail Settings | ---------------------------------------------- ---------------------------- | | Om du använder Markdown-baserad e-poståtergivning kan du konfigurera din | temat och komponentvägar här, så att du kan anpassa designen | av e-postmeddelandena. Eller du kan helt enkelt hålla fast vid Laravel-standarderna! | * / 'markdown' => ['theme' => 'default', 'paths' => [resource_path ('views / vendor / mail'),],],];
När det gäller att skicka mail, stödjer Laravel olika drivrutiner att välja mellan. Som du kan se är standardvärdet MAIL_DRIVER
är satt till smtp
.
Om du ska använda smtp
föraren att skicka mail så måste du också ställa in andra relaterade inställningar som MAIL_HOST
, MAIL_PORT
, MAIL_ENCRYPTION
, MAIL_USERNAME
, och MAIL_PASSWORD
.
Å andra sidan, om du ska använda skicka brev
förare, då vill du se till att skicka brev
systemvägen är inställd på rätt värde i config / mail.php
fil.
Du kan också ställa in från
adress som kommer att användas när du skickar mail under från
nyckel. Och till sist, om du vill använda Markdown-baserad e-poståtergivning, kan du ställa in dessa inställningar under prissänkning
nyckel-.
Körsbäret på toppen är att du också kan använda tredjepartsleverantörer av e-posttjänster som Mailgun, Mandrill, SES och SparkPost. Om du använder en av dessa tjänster måste du se till att du ställer in motsvarande inställningar i config / services.php
fil.
Så det var en grundläggande introduktion till de relaterade inställningarna för post API i Laravel. Från nästa avsnitt går vi igenom ett anpassat exempel som visar hur du skickar e-postmeddelanden.
I det här avsnittet skapar vi den mailable klass som kommer att användas för att skicka e-postmeddelanden. Den mailable klassen ansvarar för att skicka e-postmeddelanden med hjälp av en mailare som är konfigurerad i config / mail.php
fil. I själva verket tillhandahåller Laravel redan ett hantverkskommando som tillåter oss att skapa en basmall.
php artisan make: mail DemoEmail
Det borde skapa en tom e-postmall på app / Mail / DemoEmail.php
, som visas i följande kod.
vy ( 'view.name');
Låt oss ersätta innehållet i den filen med följande.
demo = $ demo; / ** * Bygg meddelandet. * * @return $ this * / public function build () return $ this-> från (sä[email protected]) -> visa ('mails.demo') -> text ('mails.demo_plain') - > med (['testVarOne' => '1', 'testVarTwo' => '2',]) -> bifoga (public_path ('/ images'). '/ demo.jpg', ['as' => ' demo.jpg ',' mime '=>' image / jpeg ',]);
Det finns två viktiga metoder som mailable klassen generellt genomför-__konstruera
och bygga
. De __konstruera
Metoden används för att initiera objekt som du ska använda i e-postmallen. Å andra sidan, bygga
Metoden används för att initiera mer e-postspecifika värden som från, visa mall, bilagor och liknande.
I vårt fall har vi passerat $ demo
objekt som ett konstruktörargument och det tilldelas demo
offentlig egendom.
I bygga
metod, vi har initierat en e-postspecifik konfiguration.
från
används för att ange en e-postadress som ska användas som en adress från.se
Metod, du kan ställa in den e-postmall som ska användas när du skickar ett e-postmeddelande med hjälp av denna mailable. I vårt fall har vi satt den till mails.demo
, och det betyder att du måste skapa en bildmallfil på resurser / views / mail / demo.blade.php
.text
Metoden används för att ställa in textversionen av en e-postmall.__konstruera
Metoden används för att ställa in objekt som ska användas i e-postmallen, du kan också använda med
metod som låter dig ställa in visningsdata för ett meddelande.fästa
Metod för att bifoga en bild med ett meddelande.Självklart behöver vi skapa e-postmallar som vi ska använda när du skickar e-postmeddelanden. Gå vidare och skapa en fil resurser / views / mail / demo.blade.php
som visas i följande kod.
Hej $ demo-> mottagare,Detta är en demo-e-post för teständamål! Det är också HTML-versionen.
Demobjektvärden:
Demo One: $ demo-> demo_one
Demo Två: $ demo-> demo_two
Värden som passeras av Med metod:
Tack,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ demo-> avsändare
Låt oss också skapa ren textversion av den filen på resurser / views / mail / demo_plain.blade.php
.
Hej $ demo-> mottagare, Detta är en demo-e-post för teständamål! Det är också HTML-versionen. Demoobjektvärden: Demo One: demo_one Demo Two: $ demo-> demo_two Värden som passerat Med metod: testVarOne: $ testVarOne testVarOne: $ testVarOne Tack, $ demo-> avsändare
Så det var mailable klassen till ditt förfogande, och vi har inte gjort ännu som vi behöver använda Post
fasad att faktiskt skicka mail. I det närmaste avsnittet undersöker vi hur du kan använda Post
Fasad för att skicka e-post med hjälp av DemoEmail
Mailable klass som just skapades i det här avsnittet.
I det här avsnittet skapar vi ett exempel för att visa hur du kan använda mailable
klass som skapades i det sista avsnittet.
Låt oss skapa en kontrollerfil på app / HTTP / Controllers / MailController.php
med följande innehåll.
demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Two Value'; $ objDemo-> avsändare = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: till ("[email protected]") -> skicka (ny DemoEmail ($ objDemo));
Det är viktigt att notera att vi har inkluderat Illuminate \ Support \ Fasader \ Mail
Fasad som kommer att användas för att skicka ett mail. I skicka
metod är följande uttalande ansvarig för att skicka ett mail genom att initialisera App \ Mail \ DemoEmail
Mailable i första hand.
Mail :: till ("[email protected]") -> skicka (ny DemoEmail ($ objDemo));
De till
metod för Illuminate \ Support \ Fasader \ Mail
Fasad returnerar en instans av \ Illuminate \ Mail \ PendingMail
klass, som redan innehåller en lämplig mailare konfigurerad i config / mail.php
fil.
Och äntligen använder vi skicka
metod för \ Illuminate \ Mail \ PendingMail
klass som skickar ett verkligt e-postmeddelande.
För att testa det, låt oss lägga till en tillhörande rutt i rutter / web.php
fil.
// Email-relaterade rutter Rutt :: get ('mail / send', 'MailController @ send');
Och med det på plats kan du köra http://your-laravel-site.com/mail/send URL för att se om det fungerar som förväntat.
Å andra sidan, om du vill testa dina e-postmallar snabbt, utan att skicka faktiska e-postmeddelanden, finns det en bestämmelse i Laravel som låter dig logga in alla utgående e-postmeddelanden.
För att uppnå det måste du ange värdet av MAIL_DRIVER
till logga
i config / mail.php
fil. Därefter kan du köra ovannämnda URL och inspektera loggfilen för att kontrollera om e-postmallen var loggad där.
Om allt går bra bör du se ett e-postmeddelande som loggas till lagring / logs / laravel.log
fil.
Det är ganska mycket så mycket som postfunktionen berörs av Laravel, och det avslutar också den här artikeln.
Idag gick vi igenom mail API som kommer inbyggt i Laravel, och det stöder också en mängd drivrutiner också.
Med utgångspunkt från grundläggande begrepp genomförde vi den mailable-klass som är ett viktigt element i mail-API: n i Laravel när vi fortsatte. I slutet testade vi också mailable-klassen genom att skapa en anpassad kontroller för att se om den verkligen fungerar.
Om du precis börjat med Laravel eller vill utvidga din kunskap, webbplats eller ansökan med tillägg, har vi en mängd olika saker du kan studera i Envato Market.
Jag skulle gärna vilja veta din feedback i form av frågor och kommentarer med hjälp av flödet nedan!