În acest articol, vom explora API-ul Mail în cadrul web Laravel. Laravel profită de biblioteca populară SwiftMailer, care este ușor de utilizat și vine cu o varietate de drivere de e-mail de a alege de la. În ultimele etape ale acestui articol, vom trece printr-o demonstrație aprofundată a conceptelor discutate în prima jumătate a articolului.
Laravel implementează o broșură în partea superioară a bibliotecii SwiftMailer, care face gestionarea e-mail-urilor foarte ușor de configurat și de utilizat în același timp. Puteți găsi setările de e-mail implicite la config / mail.php
.
env ('MAIL_DRIVER', 'sendmail'), / * | ------------------------------------ -------------------------------------- Adresa gazdă SMTP | ---------------------------------------------- ---------------------------- | | Aici puteți furniza adresa gazdă a serverului SMTP folosit de dvs. | aplicații. Este furnizată o opțiune implicită care este compatibilă cu | serviciul de poștă Mailgun, care va furniza livrări fiabile. | * / 'gazdă' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | Portul gazdă SMTP | ---------------------------------------------- ---------------------------- | | Acesta este portul SMTP folosit de aplicația dvs. pentru a trimite e-mailuri către | utilizatorii aplicației. Ca și gazda am stabilit această valoare pentru | rămâneți compatibil cu aplicația de poștă electronică Mailgun în mod implicit. | * / 'port' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- Global "De la" Adresa | -------------------------------------------- ------------------------------ | Puteți dori ca toate e-mailurile trimise de aplicația dvs. să fie trimise de la | aceeași adresă. Aici puteți specifica un nume și o adresă care este | utilizat la nivel global pentru toate e-mailurile trimise de aplicația dvs. | * / 'din' => ['adresa' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'name' => env ('MAIL_FROM_NAME', ' -------------------------------------------------- ----------------------- E-mail Protocol de criptare | ---------------------------------------------- ------------------------------ | Aici puteți specifica protocolul de criptare care trebuie utilizat atunci când | aplicația trimite mesaje e-mail. O implicită sensibilă folosind transport protocol de securitate strat ar trebui să ofere o mare de securitate. | * / 'criptare' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- Numele SMTP Server | ---------------------------------------------- ---------------------------- | | Dacă serverul dvs. SMTP necesită un nume de utilizator pentru autentificare, trebuie să | Uite aici. Acesta va fi obișnuit să se autentifice cu serverul dvs. pe | conexiune. De asemenea, puteți seta valoarea "parolă" sub această valoare. | * / 'username' => env ('MAIL_USERNAME'), 'parola' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Sendmail Calea sistemului | ---------------------------------------------- ---------------------------- | | Când folosiți driverul "sendmail" pentru a trimite e-mailuri, va trebui să știm | calea spre locul unde trimite Sendmail pe acest server. O cale implicită are | au fost oferite aici, lucru care va funcționa bine pe majoritatea sistemelor dvs. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- Setările de marcare a marcajelor | ---------------------------------------------- ---------------------------- | | Dacă utilizați redarea prin e-mail bazată pe Markdown, vă puteți configura | temă și căi de componente aici, permițându-vă să personalizați designul. | din e-mailuri. Sau, pur și simplu poți să rămâi cu defectele Laravel! | * / 'markdown' => ['theme' => 'implicit', 'paths' => [path_path ('views / vendor / mail'),],];];
Când vine vorba de trimiterea de mesaje, Laravel suportă drivere diferite de a alege de la. După cum puteți vedea, implicit MAIL_DRIVER
este setat sa smtp
.
Dacă aveți de gând să utilizați smtp
șoferul pentru a trimite poștă electronică, trebuie, de asemenea, să setați alte setări similare MAIL_HOST
, MAIL_PORT
, MAIL_ENCRYPTION
, MAIL_USERNAME
, și MAIL_PASSWORD
.
Pe de altă parte, dacă o să utilizați sendmail
șofer, atunci doriți să vă asigurați că sendmail
calea sistemului este setată la valoarea corectă în config / mail.php
fişier.
De asemenea, puteți seta din
adresa care va fi utilizată în timp ce trimiteți mesaje de poștă electronică sub din
cheie. În sfârșit, dacă doriți să utilizați redarea prin e-mail bazată pe Markdown, puteți seta acele setări sub markdown
cheie.
Cireșul din partea de sus este că puteți utiliza și furnizori de servicii de e-mail de la terțe părți, cum ar fi Mailgun, Mandrill, SES și SparkPost. Dacă utilizați unul dintre aceste servicii, trebuie să vă asigurați că setați setările corespunzătoare din config / services.php
fişier.
Deci, aceasta a fost o introducere de bază în setările legate de poșta electronică API din Laravel. Din următoarea secțiune, vom trece printr-un exemplu particularizat care vă arată cum să trimiteți e-mailuri.
În această secțiune, vom crea o clasă mailabilă, care va fi utilizată pentru a trimite e-mailuri. Clasa mailable este responsabilă pentru trimiterea de e-mailuri folosind un mailer care este configurat în config / mail.php
fişier. De fapt, Laravel oferă deja o comandă artizanală care ne permite să creăm un șablon de bază.
php artisan face: mail DemoEmail
Acest lucru ar trebui să creeze un șablon de e-mail gol la app / Mail / DemoEmail.php
, așa cum se arată în fragmentul următor.
vedere ( 'view.name');
Să înlocuim conținutul acelui fișier cu următoarele.
demo = $ demo; / ** * Construiți mesajul. * * @return $ this * / construcție funcții publice () return $ this-> de la ([email protected] ') -> vizualizare (' mails.demo ') -> text (' mails.demo_plain ' > cu ['testVarOne' => '1', 'testVarTwo' => '2',]) -> atașați (public_path ('/ images'). demo.jpg ',' mime '=>' imagine / jpeg ',]);
Există două metode importante pe care o aplică în general clasa mailabilă-__construi
și construi
. __construi
metoda este folosită pentru a inițializa obiectele pe care ar trebui să le utilizați în șablonul de e-mail. Pe de altă parte, construi
metoda este utilizată pentru a inițializa mai multe valori specifice e-mailului, cum ar fi de la, șablon de vizualizare, atașamente și altele similare.
În cazul nostru, am trecut $ demo
obiect ca argument constructor, și este atribuit Demo
proprietate publică.
În construi
, am inițializat o configurație specifică e-mailului.
din
este folosit pentru a seta o adresă de e-mail care va fi utilizată ca adresă de la o adresă.vedere
, puteți seta șablonul de e-mail care va fi utilizat în timp ce trimiteți un e-mail utilizând acest mesaj poștal. În cazul nostru, am stabilit-o mails.demo
, și înseamnă că trebuie să creați un fișier de șablon de vizualizare la Resurse / opinii / mailuri / demo.blade.php
.text
metoda este utilizată pentru a configura versiunea textului simplu al unui șablon de e-mail.__construi
metoda este utilizată pentru a seta obiecte care vor fi folosite în șablonul de e-mail, de asemenea, puteți utiliza cu
care vă permite să setați datele de vizualizare ale unui mesaj.atașa
pentru a atașa o imagine cu un mesaj.Desigur, trebuie să creăm șabloane de e-mail pe care ar trebui să le folosim în timp ce trimitem e-mailuri. Continuați și creați un fișier Resurse / opinii / mailuri / demo.blade.php
așa cum se arată în fragmentul următor.
Salut $ demo-> receptor,Acesta este un e-mail demo pentru testarea! De asemenea, este versiunea HTML.
Valorile obiectului demo:
Demo One: $ demo-> demo_one
Demo două: $ demo-> demo_two
Valorile trecute prin metoda Cu:
Mulțumesc,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ demo-> expeditor
De asemenea, să creăm versiunea textului simplu al acelui fișier la Resurse / opinii / mailuri / demo_plain.blade.php
.
Bună ziua $ demo-> receiver, Acesta este un e-mail demo pentru scopuri de testare! De asemenea, este versiunea HTML. Valorile obiectului demo: Demo One: demo-demo_one Demo Două: demo-demo_two Valori trecute cu Metoda: testVarOne: testVarOne testVarOne: $ testVarOne Mulțumesc, $ demo-> expeditor
Deci, aceasta a fost clasa mailabilă la dispoziția dumneavoastră și nu am făcut încă așa cum trebuie să folosim Poștă
fațadă pentru a trimite de fapt mesaje de poștă electronică. În următoarea secțiune, vom examina modul în care puteți utiliza Poștă
Fata pentru a trimite e-mailuri folosind DemoEmail
Clasa de învățare care a fost creată în această secțiune.
În această secțiune, vom crea un exemplu pentru a demonstra modul în care puteți utiliza Transmisibil prin poştă
clasa care a fost creată în ultima secțiune.
Să creăm un fișier de controler la app / HTTP / Controllers / MailController.php
cu următorul conținut.
demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Două Valoare'; $ objDemo-> expeditor = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: către ("[email protected]") -> trimite (noul DemoEmail ($ objDemo));
Este important să rețineți că am inclus Illuminate \ Suport \ Fațade \ Mail
Fatada care va fi utilizată pentru a trimite un e-mail. În trimite
metoda, următoarea declarație este responsabilă pentru trimiterea unui e-mail prin inițializarea App \ Mail \ DemoEmail
Mailable în primul rând.
Mail :: către ("[email protected]") -> trimite (noul DemoEmail ($ objDemo));
la
metodă a Illuminate \ Suport \ Fațade \ Mail
Fata returnează o instanță a \ Illuminate \ Mail \ PendingMail
clasa, care conține deja un mailer adecvat configurat în config / mail.php
fişier.
Și în sfârșit, folosim trimite
metodă a \ Illuminate \ Mail \ PendingMail
clasa care trimite un e-mail real.
Pentru a le testa, să adăugăm o rută asociată în rute / web.php
fişier.
// Linii aferente rutelor Route :: get ('mail / send', 'MailController @ send');
Cu ajutorul acestui serviciu, puteți rula adresa http://your-laravel-site.com/mail/send pentru a vedea dacă funcționează conform așteptărilor.
Pe de altă parte, dacă doriți să vă testați șabloanele de e-mail rapid, fără a trimite e-mailuri reale, există o prevedere în Laravel care vă permite să înregistrați toate e-mailurile trimise.
Pentru a realiza acest lucru, trebuie să setați valoarea MAIL_DRIVER
la Buturuga
în config / mail.php
fişier. Apoi, puteți rula adresa URL menționată mai sus și puteți inspecta fișierul jurnal pentru a verifica dacă șablonul de e-mail a fost înregistrat acolo.
Dacă totul merge bine, ar trebui să vedeți un e-mail conectat la depozitare / logs / laravel.log
fişier.
Acest lucru este destul de mult în ceea ce privește caracteristica de mail este în cauză în Laravel, și care încheie acest articol, de asemenea.
Astăzi, am trecut prin API-ul de poștă electronică, care vine în construcție în Laravel, și susține, de asemenea, o varietate de drivere, de asemenea.
Începând cu conceptele de bază, am implementat clasa mailabilă care este un element esențial în API-ul de e-mail din Laravel, pe măsură ce ne-am mutat. În final, am testat și clasa mailabilă, creând un controler personalizat pentru a vedea dacă funcționează.
Dacă începeți doar cu Laravel sau doriți să vă extindeți cunoștințele, site-ul sau aplicația cu extensii, avem o varietate de lucruri pe care le puteți studia în piața Envato.
Mi-ar plăcea să știu feedback-ul dvs. sub formă de interogări și comentarii utilizând feedul de mai jos!