In this tutorial we will learn Laravel 8 Markdown | Laravel 8 Send Email using Markdown Example


Step 1: 

Set Mail Configuration .env

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

MAIL_USERNAME=rathorji@gmail.com

MAIL_PASSWORD=mypassword

MAIL_ENCRYPTION=tls

Step 2: 

Create Mailable Class with Markdown 

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

app/Mail/MyDemoMail.php

<?php
   
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 $details;
   
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details = $details;
    }
   
    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.myDemoMail')
                    ->with('details', $this->details);
    }
}


Step 3: 

Create Route routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\HomeController;
  
/*
|--------------------------------------------------------------------------
| 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('my-demo-mail', [HomeController::class, 'myDemoMail']);

Step 4: 

Create Controller Method app/Http/Controllers/HomeController.php

<?php
   
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Mail\MyDemoMail;
use Mail;
   
class HomeController extends Controller
{
  
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function myDemoMail()
    {
        $myEmail = 'aatmaninfotech@gmail.com';
   
        $details = [
            'title' => 'Mail Demo from rathorji.in',
            'url' => 'https://www.rathorji.in'
        ];
  
        Mail::to($myEmail)->send(new MyDemoMail($details));
   
        dd("Mail Send Successfully");
    }
}


Step 5: 

Add View File resources/views/emails/myDemoMail.blade.php

@component('mail::message')
# {{ $details['title'] }}
  
The body of your message. 
   
@component('mail::button', ['url' => $details['url']])
Button Text
@endcomponent
   
Thanks,<br>
{{ config('app.name') }}
@endcomponent

You can run your project by using following command:

php artisan serve

Now open this url:

localhost:8000/my-demo-mail

May this example help you.