In dit artikel gaan we de Mail-API verkennen in het Laravel-webraamwerk. Laravel maakt gebruik van de populaire SwiftMailer-bibliotheek, die gemakkelijk te gebruiken is en wordt geleverd met een verscheidenheid aan e-mailbestuurders om uit te kiezen. In de laatste fasen van het artikel zullen we een diepgaande demonstratie van de concepten besproken in de eerste helft van het artikel doornemen.
Laravel implementeert een wrapper bovenop de SwiftMailer-bibliotheek waardoor e-mailbeheer heel eenvoudig te configureren en tegelijkertijd te gebruiken is. U kunt de standaard e-mailinstellingen vinden op config / mail.php
.
env ('MAIL_DRIVER', 'sendmail'), / * | ------------------------------------ -------------------------------------- | SMTP-hostadres | ---------------------------------------------- ---------------------------- | | Hier kunt u het hostadres opgeven van de SMTP-server die wordt gebruikt door uw | toepassingen. Er is een standaardoptie die compatibel is met | de mailgun-mailservice die betrouwbare leveringen zal bieden. | * / 'host' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | SMTP Host Port | ---------------------------------------------- ---------------------------- | | Dit is de SMTP-poort die door uw toepassing wordt gebruikt om e-mails aan | te bezorgen gebruikers van de applicatie. Net als de host hebben we deze waarde ingesteld op | compatibel blijven met de Mailgun e-mailtoepassing. | * / 'poort' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- | Globaal "Van" adres | -------------------------------------------- ------------------------------ | | Mogelijk wilt u dat alle e-mails verzonden door uw toepassing worden verzonden vanaf | hetzelfde adres. Hier kunt u een naam en adres opgeven die | is globaal gebruikt voor alle e-mails die door uw toepassing worden verzonden. | * / 'from' => ['address' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'name' => env ('MAIL_FROM_NAME', 'Example'),], / * | - -------------------------------------------------- ----------------------- | E-mail versleutelingsprotocol | -------------------------------------------- ------------------------------ | | Hier kunt u het coderingsprotocol opgeven dat moet worden gebruikt wanneer | de applicatie verstuurt e-mailberichten. Een verstandige standaard met behulp van de | transportlaagbeveiligingsprotocol zou een grote veiligheid moeten bieden. | * / 'codering' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- | SMTP Server-gebruikersnaam | ---------------------------------------------- ---------------------------- | | Als uw SMTP-server een gebruikersnaam vereist voor verificatie, moet u | stel het hier in. Dit zal wennen om te authenticeren met uw server op | verbinding. U kunt ook de waarde "wachtwoord" lager instellen dan deze. | * / 'gebruikersnaam' => env ('MAIL_USERNAME'), 'wachtwoord' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Sendmail-systeempad | ---------------------------------------------- ---------------------------- | | Wanneer u de "sendmail" -driver gebruikt om e-mails te verzenden, moeten we weten | het pad naar waar Sendmail woont op deze server. Een standaardpad heeft | is hier verstrekt, wat goed werkt op de meeste van uw systemen. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- | Markdown Mail Instellingen | ---------------------------------------------- ---------------------------- | | Als u op Markdown gebaseerde e-mailweergave gebruikt, kunt u uw | thema- en componentpaden hier, zodat u het ontwerp kunt aanpassen | van de e-mails. Of u kunt gewoon vasthouden aan de Laravel-standaardwaarden! | * / 'markdown' => ['theme' => 'default', 'paths' => [resource_path ('views / vendor / mail'),],],];
Als het gaat om het verzenden van mails, ondersteunt Laravel verschillende stuurprogramma's om uit te kiezen. Zoals je kunt zien, is de standaard MAIL_DRIVER
ingesteld op smtp
.
Als je de smtp
bestuurder om mails te verzenden, dan moet je ook andere gerelateerde instellingen instellen zoals MAIL_HOST
, MAIL_PORT
, MAIL_ENCRYPTION
, MAIL_USERNAME
, en MAIL_PASSWORD
.
Aan de andere kant, als u de Verzend mail
bestuurder, dan wilt u ervoor zorgen dat de Verzend mail
systeempad is ingesteld op de juiste waarde in de config / mail.php
het dossier.
U kunt ook de van
adres dat zal worden gebruikt tijdens het verzenden van e-mails onder de van
sleutel. En ten slotte, als u Markdown-gebaseerde e-mailweergave wilt gebruiken, kunt u die instellingen onder de markdown
sleutel.
De kers op de taart is dat je ook e-mailservices van derden kunt gebruiken, zoals Mailgun, Mandrill, SES en SparkPost. Als u een van die services gebruikt, moet u ervoor zorgen dat u de overeenkomstige instellingen in de config / services.php
het dossier.
Dus dat was een eenvoudige inleiding tot de mail API-gerelateerde instellingen in Laravel. Vanaf het volgende gedeelte zullen we een aangepast voorbeeld doornemen dat u laat zien hoe u e-mails kunt verzenden.
In deze sectie maken we de mailbare klasse, die zal worden gebruikt om e-mails te verzenden. De mailbare klasse is verantwoordelijk voor het verzenden van e-mails met behulp van een mailer die is geconfigureerd in de config / mail.php
het dossier. Laravel biedt al een ambachtelijk commando waarmee we een basissjabloon kunnen maken.
php artisan make: mail DemoEmail
Dat zou een lege e-mailsjabloon moeten creëren bij app / Mail / DemoEmail.php
, zoals getoond in het volgende fragment.
view (view.name);
Laten we de inhoud van dat bestand vervangen door het volgende.
demo = $ demo; / ** * Bouw het bericht op. * * @return $ this * / public function build () return $ this-> from ('[email protected] ') -> view (' mails.demo ') -> text (' mails.demo_plain ') - > with (['testVarOne' => '1', 'testVarTwo' => '2',]) -> attach (public_path ('/ images'). '/ demo.jpg', ['as' => ' demo.jpg ',' mime '=>' image / jpeg ',]);
Er zijn twee belangrijke methoden die de mailbare klasse doorgaans implementeert-__construct
en bouwen
. De __construct
methode wordt gebruikt om objecten te initialiseren die u zou moeten gebruiken in de e-mailsjabloon. Aan de andere kant, de bouwen
methode wordt gebruikt om meer e-mailspecifieke waarden zoals van, weergavesjabloon, bijlagen en dergelijke te initialiseren.
In ons geval hebben we de $ demo
object als constructorargument, en het is toegewezen aan de demonstratie
publiek eigendom.
In de bouwen
methode hebben we een e-mailspecifieke configuratie geïnitialiseerd.
van
wordt gebruikt om een e-mailadres in te stellen dat als een van het adres wordt gebruikt.uitzicht
methode, kunt u de e-mailsjabloon instellen die wordt gebruikt tijdens het verzenden van een e-mail met deze mail. In ons geval hebben we dit ingesteld mails.demo
, en dit betekent dat u een beeldsjabloonbestand moet maken op resources / views / mails / demo.blade.php
.tekst
methode wordt gebruikt om de platte tekstversie van een e-mailsjabloon in te stellen.__construct
methode wordt gebruikt om objecten in te stellen die in de e-mailsjabloon zullen worden gebruikt, u kunt ook de met
methode waarmee u de weergavegegevens van een bericht kunt instellen.hechten
methode om een afbeelding bij een bericht bij te voegen.Natuurlijk moeten we e-mailsjablonen maken die we moeten gebruiken bij het verzenden van e-mails. Ga je gang en maak een bestand aan resources / views / mails / demo.blade.php
zoals getoond in het volgende fragment.
Hallo $ demo-> ontvanger,Dit is een demo-e-mail voor testdoeleinden! Het is ook de HTML-versie.
Demo-objectwaarden:
Demo One: $ demo-> demo_one
Demo Two: $ demo-> demo_two
Waarden doorgegeven Met methode:
Dank je,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ demo-> afzender
Laten we ook de platte tekstversie van dat bestand maken op resources / views / mails / demo_plain.blade.php
.
Hallo $ demo-> ontvanger, dit is een demomail voor testdoeleinden! Het is ook de HTML-versie. Demo-objectwaarden: Demo One: $ demo-> demo_one Demo Two: $ demo-> demo_two Waarden voorbijgegaan Met methode: testVarOne: $ testVarOne testVarOne: $ testVarOne Bedankt, $ demo-> afzender
Dus dat was de mailbare klasse tot uw beschikking, en we hebben het nog niet gedaan, want we moeten de Mail
gevel om daadwerkelijk mails te verzenden. In het volgende gedeelte zullen we onderzoeken hoe u de kunt gebruiken Mail
Gevel om e-mails te verzenden met behulp van de DemoEmail
Mailable-klasse die zojuist in deze sectie is gemaakt.
In deze sectie maken we een voorbeeld om te laten zien hoe u de kunt gebruiken mailable
klasse die in de laatste sectie is gemaakt.
Laten we een controllerbestand maken op app / Http / Controllers / MailController.php
met de volgende inhoud.
demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Two Value'; $ objDemo-> sender = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: to ("[email protected]") -> send (nieuwe DemoEmail ($ objDemo));
Het is belangrijk op te merken dat we de Verlichten \ Support \ Gevels \ Mail
Gevel die zal worden gebruikt om een e-mail te sturen. In de sturen
methode, de volgende verklaring is verantwoordelijk voor het verzenden van een e-mail door de App \ Mail \ DemoEmail
Mailable in de eerste plaats.
Mail :: to ("[email protected]") -> send (nieuwe DemoEmail ($ objDemo));
De naar
methode van de Verlichten \ Support \ Gevels \ Mail
Gevel retourneert een exemplaar van de \ Illuminate \ Mail \ PendingMail
klasse, die al een geschikte mailer bevat geconfigureerd in de config / mail.php
het dossier.
En tot slot gebruiken we de sturen
methode van de \ Illuminate \ Mail \ PendingMail
klas die een echte e-mail verzendt.
Om het te testen, laten we een geassocieerde route toevoegen in de routes / web.php
het dossier.
// Email gerelateerde routes Route :: get ('mail / send', 'MailController @ send');
En met dat op zijn plaats, kun je de http://your-laravel-site.com/mail/send URL gebruiken om te zien of het werkt zoals verwacht.
Aan de andere kant, als u uw e-mailsjablonen snel wilt testen zonder echte e-mails te verzenden, is er een bepaling in Laravel waarmee u alle uitgaande e-mails kunt loggen.
Om dat te bereiken, moet u de waarde van instellen MAIL_DRIVER
naar logboek
in de config / mail.php
het dossier. Vervolgens kunt u de bovengenoemde URL uitvoeren en het logbestand controleren om te controleren of de e-mailsjabloon daar is vastgelegd.
Als alles goed gaat, ziet u een e-mail die wordt geregistreerd bij de opslag / logs / laravel.log
het dossier.
Dat is voor zover het de e-mailfunctie betreft in Laravel en dat besluit ook dit artikel.
Vandaag hebben we de mail-API doorgenomen die in Laravel is ingebouwd en deze ondersteunt ook verschillende stuurprogramma's.
Beginnend met basisbegrippen hebben we de mailbare klasse geïmplementeerd die een essentieel onderdeel is van de mail-API in Laravel terwijl we verder gingen. Aan het eind hebben we ook de mailbare klasse getest door een aangepaste controller te maken om te zien of deze echt werkt.
Als je net bent begonnen met Laravel of je kennis, site of applicatie met uitbreidingen wilt uitbreiden, hebben we een aantal dingen die je kunt bestuderen in Envato Market.
Ik zou graag uw feedback willen weten in de vorm van vragen en opmerkingen met behulp van de onderstaande feed!