SMTP-installation och konfiguration
Öppna .env filen från Laravel-projektets rotmapp och konfigurera konfigurationen enligt ditt Gmail-konto. Du måste aktiveraMindre säker app”I ditt Gmail-konto för att skicka ett e-postmeddelande med Gmail SMTP-servern.
MAIL_MAILER = smtpMAIL_HOST = smtp.gmail.com
MAIL_PORT = 465
MAIL_USERNAME = DIN_EMAIL_ADDRESS
MAIL_PASSWORD = DITT_PASSWORD
MAIL_ENCRYPTION = ssl
***Notera:
Du kan få SMTP-autentiseringsfelet när du skickar e-postmeddelanden med SMTP Gmail-kontoservern. Öppna StreamBuffer.php fil från följande plats.
/ var / www / html / laravelpro / vendor / swiftmailer / swiftmailer /lib / klasser / Swift / Transport / StreamBuffer.php
Hitta och ersätt rad 259 med följande rad för att autentisera Gmail SMTP-servern.
$ options ['ssl'] = array ('verify_peer' => false, 'verify_peer_name' => false,'allow_self_signed' => sant);
Skicka e-post med SMTP
Utför följande steg för att skicka e-post med hjälp av kontaktformuläret genom att skapa en kontroller, vy och e-postklass.
Steg:
Kör följande kommando från terminalen för att skapa EmailController för att visa kontaktformuläret och skicka ett e-postmeddelande med Laravel mail class.
$ php hantverkare: controller EmailControllerKör följande kommando för att skapa en e-postklass med namnet sendingEmail. Detta skapar klassen under App \ Mail mapp.
$ php artisan make: mail sendingEmailSkapa en vyfil med namnet e-postmeddelande.blad.php med följande kod för att visa kontaktformuläret.
Kontakta oss
@if (räkna ($ fel)> 0)
- $ error
@foreach ($ -fel-> allt () som $ -fel)
@endforeach
@endif
@if ($ message = Session :: get ('success'))
$ meddelande
@endif
Öppna EmailController och ändra koden med följande kod. De Post fasad och sendingEmail e-postklasser importeras i början av filen. Här, den index() metoden laddar visningsfilen i webbläsaren för att visa kontaktformuläret. Efter att ha skickat in formuläret, skicka() metod kommer att kallas. Denna metod validerar formuläret med valideringsreglerna. De $ data array används för att skicka värdena för namn och meddelande fält in i sendingEmail klass. Därefter skickas e-postmeddelandet med Post Fasad. Du måste ange en giltig e-postadress för mottagaren i till() funktion innan du kör koden. Om e-postmeddelandet skickas kommer ett framgångsmeddelande att skrivas ut.
namnrymd App \ Http \ Controllers;använd Illuminate \ Http \ Request;
använd Illuminate \ Support \ Facades \ Mail;
använd App \ Mail \ sendingEmail;
klass EmailController utökar Controller
funktionsindex ()
returvy ('emailsend');
funktion skicka (Begär $ begäran)
$ detta-> validera ($ begäran, [
'name' => 'krävs',
'email' => 'krävs | e-post',
'meddelande' => 'krävs'
]);
$ data = array (
'namn' => $ begäran-> namn,
'meddelande' => $ begäran-> meddelande
);
Mail :: till ('Mottagarens e-postadress') -> skicka (ny sendingEmail ($ data));
återvänd tillbaka () -> med ('success', 'Tack för att du kontaktade oss!');
Öppna sendingEmail klass och ändra koden med följande kod. E-postämnet definieras i bygga() metod och e-postmall vy används för att formatera e-postinnehållet, skapat i nästa steg. Värdena överförda från EmailController lagras i $ e-post objekt och skickas i e-postmall se.
namnrymd App \ Mail;använd Illuminate \ Bus \ Queueable;
använd Illuminate \ Contracts \ Queue \ ShouldQueue;
använd Illuminate \ Mail \ Mailable;
använd Illuminate \ Queue \ SerializesModels;
class sendingEmail utökar Mailable
använd Queueable, SerializesModels;
/ **
* Skapa en ny meddelandeinstans.
*
* @return ogiltig
* /
offentliga $ e-postmeddelanden;
offentlig funktion __construct ($ e-post)
$ this-> emails = $ emails;
/ **
* Skapa meddelandet.s
*
* @ returnera $ detta
* /
public function build ()
returnera $ this-> subject ('Meddelande från besökaren')
-> visa ('email_template')
-> med ('emails', $ this-> emails);
Skapa den mallvisningsfil som heter e-postmall.blad.php med följande kod för att skicka det formaterade e-postmeddelandet till avsändaren. Värdena överförda från sendingEmail klass används i den här mallen.
Hej,
jag är $ emails ['name']
Min fråga handlar om följande ämne:
$ emails ['message'].
Det kommer att vara till hjälp om du svarar snart.Tack.
Öppna nu webb.php fil och lägg till följande ruttkod för att öppna kontaktformuläret och skicka e-postmeddelandet.
Rutt :: get ('/ contact', '[email protected]');Rutt :: post ('/ sendemail / send', '[email protected]');
Kör följande URL från webbläsaren för att ladda kontaktformuläret.
http: // localhost / laravelpro / public / contact
Fyll i formuläret och klicka på Skicka meddelande för att skicka innehållet i formuläret till skicka() metod för EmailController klass.
Om e-postmeddelandet skickas framgångsrikt får du framgångsmeddelandet, som visas i följande bild.
Öppna nu det Gmail-konto som du använde för att skicka ett e-postmeddelande i skicka() metod för EmailController klass. Om du öppnar e-postmeddelandet får du följande e-postinnehåll genererat med hjälp av en e-postmall visa fil.
Videohandledning
Slutsats
Det finns flera sätt att skicka ett e-postmeddelande i Laravel-ramverket. Det enklaste och enklaste sättet att skicka e-post i Laravel visas i denna handledning. Om du har ett Gmail-konto kan du enkelt skicka ett e-postmeddelande genom att följa stegen som visas i denna handledning. Gmail SMTP-servern används här för att skicka ett e-postmeddelande och uppgiften för att skicka e-post testas genom att köra koden från den lokala servern. Den här handledningen visar endast HTML-formaterade e-postuppgifter. Du kan också utföra andra uppgifter, som filbilaga, avsändarnamn, etc., genom att använda andra metoder för Post klass.