Laravel 9 Markdown Send Email Using Markdown Mailables

Hello Artisan,

In this tutorial, I will show you how to create and send markdown mail in Laravel 9 application. So from this tutorial, you will learn how to send mail using a markdown template. You know that laravel provides many mail driver support.

What is the advantage of the markdown template in Laravel 9? Actually, Markdown provides inbuilt pre-define mail templates and components for email. We can use components for tables, email, links, buttons, embed images, etc and we can customize it very easily.

So if you don't know how to send email using markdown in Laravel 9, then this laravel 9 markdown email example tutorial is for you.So let's see and follow the below step by step instructions to send emails using markdown in laravel 9.


Step 1: Install Laravel 9

I am going to start this tutorial from scratch. So download a fresh Laravel 9 application to send email in Laravel.

composer create-project laravel/laravel example-app


Step 2: Make Configuration

In the first step, you have to add send mail configuration with mail driver, mail host, mail port, mail username, mail password so laravel 9 will use those sender configurations for sending an email. So you can simply add as like following.




Read also: How to Send Email in Laravel 8.x with Mailtrap


Step 3: Create Mailable Class with Markdown Template

In this step, we will create a mail class MyDemoMail for email sending. Here we will write code for which view will call and object of user. So let's run the below command.

php artisan make:mail MyDemoMail --markdown=emails.myDemoMail


now, let's update the code on the MyDemoMail.php file as below:


namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class MyDemoMail extends Mailable
    use Queueable, SerializesModels;
    public $mailData;
     * Create a new message instance.
     * @return void
    public function __construct($mailData)
        $this->mailData = $mailData;
     * Build the message.
     * @return $this
    public function build()
        return $this->subject('Mail from')


Step 4: Create Controller

In this step, we will create MailController with index() method where we write code for sending mail to a given email address. so first let's create a controller by following command and updating code on it.


namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Mail\MyDemoMail;
class MailController extends Controller
     * Write code on Method
     * @return response()
    public function index()
        $mailData = [
            'title' => 'Mail from',
            'url' => ''
        Mail::to('')->send(new MyDemoMail($mailData));
        dd("Email is sent successfully.");


Step 5: Create Routes

In this step, we need to create routes for a list of sending emails. so open your "routes/web.php" file and add the following route.


use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MailController;
| 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('send-mail', [MailController::class, 'index']);


Step 6: Create Blade File

In this step, we will create a blade view file and write an email that we want to send. now we just write some dummy text. create bellow files on the "emails" folder.



Now all are set to go to test our mail sending using markdown in Laravel 9 application. Run php artisan serve command to test it. 


Read also: Send Mail to Inactive User with Cron Jobs in Laravel


Hope this Laravel 9 markdown email example will help you.


#laravel #laravel-9x #laravel-mail