Laravel 9 Send Mail using Sendgrid Tutorial
May 11, 2022 . Admin
Hi Guys,
In this tutorial, I will learn you how to send mail using sendgrid in laravel 9.you can easy and simply send mail via sendgrid in laravel 9.
Sendgrid is a very popular API to send email from our laravel application. It is very fast to send mail and also you can track sent mail. Tracking email is a very important feature of Sendgrid api and you can also see how many users open your mail, and click on your mail too.
First we will add configuration on mail. I added my gmail account configuration. so first open .env file and bellow code:
Step 1: Download LaravelLet us begin the tutorial by installing a new laravel application. if you have already created the project, then skip the following step.
composer create-project laravel/laravel example-appStep 2: .env file
Check your .env file and configure these variables:
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=xyz@gmail.com MAIL_PASSWORD=123456 MAIL_ENCRYPTION=tlsStep 3: Create Mail
Next you need to create a Mailable class, Laravel's CLI tool called Artisan makes that a simple feat. Open CLI, go to the project directory and type:
php artisan make:mail sendGrid --markdown=emails.sendGrid
This command will create a new file under app/Mail/SendGrid.php and it should look something like this:
app/Mail/SendGrid.php<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class SendGrid extends Mailable { use Queueable, SerializesModels; public $input; /** * Create a new message instance. * * @return void */ public function __construct($input) { $this->input = $input; } /** * Build the message. * * @return $this */ public function build() { return $this->markdown('emails.sendGrid') ->with([ 'message' => $this->input['message'], ]) ->from('test@gmail.com', 'Vector Global') ->subject($this->input['subject']); } }Step 4: Create Route
Here, we need to add a simple route for postcontroller. so open your "routes/web.php" file and add the following route.
routes/web.php<?php use App\Http\Controllers\PostController; /* |-------------------------------------------------------------------------- | 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('mail/send-grid', [PostController::class, 'sendMail']);Step 5: Create Controller
In this step, now we should create new controller as PostController. So run bellow command and create new controller.
php artisan make:controller PostController
So, let's copy bellow code and put on PostController.php file.
app/Http/Controllers/PostController.php<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller; use Illuminate\Http\Request; use Validator; use App\Mail\SendGrid; class PostController extends Controller { /** * Write code on Method * * @return response() */ public function sendMail(Requset $request) { $input = ['message' => 'This is a test!']; Mail::to('dummy@example.com')->send(new SendGrid($input)); } }Step 6: Create Blade Files
In last step. In this step, we have to create just a blade file. so we need to create only one blade file as a sendGrid.blade.php file.
resources/views/sendGrid.blade.php@component('mail::message') # Introduction {{ $message }} @component('mail::button', ['url' => '']) Button Text @endcomponent Thanks,Run Laravel App:
{{ config('app.name') }} @endcomponent
All steps have been done, now you have to type the given command and hit enter to run the laravel app:
php artisan serve
Now, you have to open web browser, type the given URL and view the app output:
http://localhost:8000/mail/send-grid
It will help you...