In this article, we will see how to send email using SendGrid in laravel 9. Laravel provides a clean API over the popular SwiftMailer library with drivers for SMTP, PHP's mail
, sendmail
and more. For this example, we'll be sending an email with SendGrid using the SMTP Driver. SendGrid is a cloud-based SMTP provider that allows you to send email without having to maintain email servers.
SendGrid Documentation: Send Email with Laravel & SendGrid | Twilio
So, let's see, laravel 9 send email using SendGrid, and send mail in laravel 9 using SendGrid.
In this step, we will configure the .env file.
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=sendgrid_api_key
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="Websolutionstuff"
[email protected]
You can send 100 messages per SMTP connection
at a time.
Next, you need to create a Mailable class using the below command.
php artisan make:mail TestEmail
This command will create a new file under app/Mail/TestEmail.php
and it's looks like this.
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class TestEmail extends Mailable
{
use Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
$address = '[email protected]';
$subject = 'This is a demo!';
$name = 'Jane Doe';
return $this->view('emails.test')
->from($address, $name)
->cc($address, $name)
->bcc($address, $name)
->replyTo($address, $name)
->subject($subject)
->with([ 'test_message' => $this->data['message'] ]);
}
}
Let's create a file under app/resources/views/emails/test.blade.php
and add this code.
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
</head>
<body>
<h2>How To Send Email Using SendGrid In Laravel 9 - Websolutionstuff</h2>
<p>{{ $test_message }}</p>
</body>
</html>
In this step, we will use a mailable class and send a test mail.
<?php
use App\Mail\TestEmail;
$data = ['message' => 'This is a test!'];
Mail::to('[email protected]')->send(new TestEmail($data));
You might also like:
- Read Also: Laravel 8 Custom Email Verification Tutorial
- Read Also: How To Send E-mail Using Queue In Laravel 9
- Read Also: How To Send Email With Attachment In Laravel 9
- Read Also: How To Check Email Already Exist Or Not In Laravel