Welcome to you In this article. Today, we will discuss you how to Send Email in Laravel 7. we are using SMTP to send email in this article. laravel provides a swiftmailer package library so we can use that and easily send the mail.

Overview

Step 1: Install Laravel 7

Step 2: Email Configuration

Step 3: Create a Mailable class

Step 4: Create Blade Files

Step 5: Create Route in web.php file

Step 6: Run Our Laravel Application

Step 1 : Install Laravel 7

We are going to install laravel 7, so first open the command prompt or terminal and go to go to xampp htdocs folder directory using the command prompt. after then run the below command.

composer create-project --prefer-dist laravel/laravel laravel7_sendmail 1 composer create - project -- prefer - dist laravel / laravel laravel7_sendmail

Step 2: Email Configuration

After complete installation of laravel. we have to mail configuration. now we will open the .env file and define the mail_driver, mail_host, mail_port, mail_username, mail_password and mail_encryption in the .env file. See below changes in a .env file.

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME= // some username MAIL_PASSWORD= // some password MAIL_ENCRYPTION=tls 1 2 3 4 5 6 MAIL_DRIVER = smtp MAIL_HOST = smtp . gmail . com MAIL_PORT = 587 MAIL_USERNAME = // some username MAIL_PASSWORD = // some password MAIL_ENCRYPTION = tls

Step 3: Create a Mailable class

We will create mail class using below command. Now, if you want to pass object for view then you can write and pass the object in this file. so here we pass the student_detail in the below file.

.

php artisan make:mail MySendMail 1 php artisan make : mail MySendMail

MySendMail.php

<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class MySendMail extends Mailable { use Queueable, SerializesModels; public $student_detail; /** * Create a new message instance. * * @return void */ public function __construct($student_detail) { $this->student_detail = $student_detail; } /** * Build the message. * * @return $this */ public function build() { return $this->view('emails.mySendMail'); } } ?> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?php namespace App \ Mail ; use Illuminate \ Bus \ Queueable ; use Illuminate \ Mail \ Mailable ; use Illuminate \ Queue \ SerializesModels ; use Illuminate \ Contracts \ Queue \ ShouldQueue ; class MySendMail extends Mailable { use Queueable , SerializesModels ; public $student_detail ; /** * Create a new message instance. * * @return void */ public function __construct ( $student_detail ) { $this -> student_detail = $student_detail ; } /** * Build the message. * * @return $this */ public function build ( ) { return $this -> view ( 'emails.mySendMail' ) ; } } ?>

Step 4: Create Blade Files

First we will create the new directory “resources/views/emails” and that directory in create a “resources/views/emails/mySendMail.blade.php” file.

mySendMail.blade.php

<!DOCTYPE html> <html> <head> <title>Laravel 7 Send Email Example - XpertPhp</title> </head> <body> <div> <p>{{ $student_detail['first_name'] }}</p> <p>{{ $student_detail['last_name'] }}</p> <p>{{ $student_detail['address'] }}</p> <p>Thank you</p> </div> </body> </html> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 < ! DOCTYPE html > < html > < head > < title > Laravel 7 Send Email Example - XpertPhp < / title > < / head > < body > < div > < p > { { $student_detail [ 'first_name' ] } } < / p > < p > { { $student_detail [ 'last_name' ] } } < / p > < p > { { $student_detail [ 'address' ] } } < / p > < p > Thank you < / p > < / div > < / body > < / html >

Step 5: Create Route in web.php file

We have to need put below route in routes/web.php file.

<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { // return view('welcome'); }); Route::get('/send/email', 'StudentController@mail'); ?> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route:: get ( '/' , function ( ) { // return view('welcome'); } ) ; Route:: get ( '/send/email' , 'StudentController@mail' ) ; ?>

StudentController.php

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Mail; use App\Mail\MySendMail; class StudentController extends Controller { public function mail() { $student_detail = [ 'first_name' => 'test', 'last_name' => 'xyz' 'address' => 'test xyz' ]; Mail::to('test@gmail.com')->send(new MySendMail($student_detail)); return 'Email has been sent'; } } ?> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php namespace App \ Http \ Controllers ; use Illuminate \ Support \ Facades \ Mail ; use App \ Mail \ MySendMail ; class StudentController extends Controller { public function mail ( ) { $student_detail = [ 'first_name' = > 'test' , 'last_name' = > 'xyz' 'address' = > 'test xyz' ] ; Mail:: to ( 'test@gmail.com' ) -> send ( new MySendMail ( $student_detail ) ) ; return 'Email has been sent' ; } } ?>

Step 6: Run Our Laravel Application

We can start the server and run this example using the below command.

php artisan serve 1 php artisan serve

Now we will run our example using the below Url in the browser.

http://127.0.0.1:8000/student 1 http : //127.0.0.1:8000/student