SMTP-opsætning og konfiguration
Åbn .env fil fra rodmappen i Laravel-projektet, og konfigurer konfigurationen i henhold til din Gmail-konto. Du skal aktivere “Mindre sikker app”Mulighed for din Gmail-konto til at sende en e-mail ved hjælp af Gmail SMTP-serveren.
MAIL_MAILER = smtpMAIL_HOST = smtp.gmail.com
MAIL_PORT = 465
MAIL_USERNAME = DIN_EMAIL_ADDRESS
MAIL_PASSWORD = DIN_PASSWORD
MAIL_ENCRYPTION = ssl
***Bemærk:
Du modtager muligvis SMTP-godkendelsesfejl, mens du sender e-mails ved hjælp af SMTP Gmail-kontoserveren. Åbn StreamBuffer.php fil fra følgende placering.
/ var / www / html / laravelpro / vendor / swiftmailer / swiftmailer /lib / klasser / Swift / Transport / StreamBuffer.php
Find og udskift linje 259 med følgende linje for at godkende Gmail SMTP-serveren.
$ options ['ssl'] = array ('verify_peer' => false, 'verify_peer_name' => false,'allow_self_signed' => sand);
Afsendelse af e-mails ved hjælp af SMTP
Udfør følgende trin for at sende e-mail ved hjælp af kontaktformularen ved at oprette en controller-, visnings- og mailklasse.
Trin:
Kør følgende kommando fra terminalen for at oprette EmailController for at vise kontaktformularen og sende en e-mail ved hjælp af Laravel mail klasse.
$ php håndværkermærke: controller EmailControllerKør følgende kommando for at oprette en mailklasse med navnet sendingE-mail. Dette vil skabe klassen under App \ Mail folder.
$ php håndværkerfabrik: mail sendingE-mailOpret en visningsfil med navnet emailsend.klinge.php med følgende kode for at få vist kontaktformularen.
Kontakt os
@if (antal ($ fejl)> 0)
- $ error
@foreach ($ fejl-> alle () som $ fejl)
@endforeach
@Afslut Hvis
@if ($ besked = Session :: get ('succes'))
$ besked
@Afslut Hvis
Åben EmailController og rediger koden med følgende kode. Det Post facade og sendingE-mail mailklasser importeres i begyndelsen af filen. Her, den indeks() metode indlæser visningsfilen i browseren for at vise kontaktformularen. Efter at have indsendt formularen, sende() metode kaldes. Denne metode validerer formularen ved hjælp af valideringsreglerne. Det $ data array bruges til at sende værdierne for navn og besked felter i sendingE-mail klasse. Derefter sendes e-mailen ved hjælp af Post facade. Du skal angive en gyldig e-mail-adresse til modtageren i til() funktion, før koden udføres. Hvis e-mailen sendes med succes, udskrives en succesmeddelelse.
navneområde App \ Http \ Controllers;brug Illuminate \ Http \ Request;
brug Illuminate \ Support \ Facades \ Mail;
brug App \ Mail \ sendingEmail;
klasse EmailController udvider Controller
funktionsindeks ()
returvisning ('emailsend');
funktion send (Anmod $ anmodning)
$ dette-> valider ($ anmodning, [
'name' => 'krævet',
'email' => 'påkrævet | e-mail',
'message' => 'krævet'
]);
$ data = array (
'navn' => $ anmodning-> navn,
'besked' => $ anmodning-> besked
);
Mail :: til ('Modtagerens e-mail-adresse') -> send (ny sendingEmail ($ data));
vende tilbage () -> med ('succes', 'Tak for at kontakte os!');
Åbn sendingE-mail klasse og ændre koden med følgende kode. E-mail-emnet er defineret inde i bygge () metode og email_template visning bruges til at formatere e-mail-indholdet, oprettet i næste trin. Værdierne overført fra EmailController er gemt i $ e-mail objekt og sendes i email_template udsigt.
navneområde App \ Mail;brug Illuminate \ Bus \ Queueable;
brug Illuminate \ Contracts \ Queue \ ShouldQueue;
brug Illuminate \ Mail \ Mailable;
brug Illuminate \ Queue \ SerializesModels;
klasse sendingEmail udvider Mailable
brug i kø, SerializesModels;
/ **
* Opret en ny beskedforekomst.
*
* @ tilbagevenden ugyldig
* /
offentlige $ e-mails;
offentlig funktion __construct ($ emails)
$ dette-> e-mails = $ e-mails;
/ **
* Byg beskeden.s
*
* @ Retur $ dette
* /
offentlig funktion build ()
returner $ dette-> emne ('Besked fra besøgende')
-> vis ('email_template')
-> med ('emails', $ this-> emails);
Opret skabelonvisningsfilen med navnet email_template.klinge.php med følgende kode for at sende den formaterede e-mail til afsenderen. Værdierne overført fra sendingE-mail klasse bruges i denne skabelon.
Hej,
Jeg er $ emails ['name']
Min forespørgsel handler om følgende emne:
$ emails ['message'].
Det vil være nyttigt, hvis du snart giver mig svar.tak skal du have.
Åbn nu web.php fil og tilføj følgende rutekode for at åbne kontaktformularen og sende e-mailen.
Rute :: get ('/ contact', '[email protected]');Rute :: post ('/ sendemail / send', '[email protected]');
Kør følgende URL fra browseren for at indlæse kontaktformularen.
http: // localhost / laravelpro / public / contact
Udfyld formularen og klik på Send besked knap for at sende indholdet af formularen til sende() metode til EmailController klasse.
Hvis e-mailen er sendt med succes, får du succesmeddelelsen som vist på det følgende billede.
Åbn nu den Gmail-konto, som du brugte til at sende en e-mail i sende() metode til EmailController klasse. Hvis du åbner e-mailen, får du følgende e-mail-indhold, genereret ved hjælp af en email_template Se fil.
Video tutorial
Konklusion
Der findes flere måder i Laravel-rammen for at sende en e-mail. Den mest enkle og nemmeste måde at sende e-mail i Laravel vises i denne vejledning. Hvis du har en Gmail-konto, kan du nemt sende en e-mail ved at følge trinnene vist i denne vejledning. Gmail SMTP-serveren bruges her til at sende en e-mail, og e-mail-afsendelsesopgaven testes ved at køre koden fra den lokale server. Denne vejledning viser kun HTML-formaterede e-mail-afsendelsesopgaver. Du kan også udføre andre opgaver, som vedhæftet fil, afsendernavn osv., ved hjælp af andre metoder til Post klasse.