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.