How to send mail in Laravel with template

Whenever we start building any application. The mailing system does matter a lot because this is what keeps engaging users with the application. So, this is a very important part also. Let’s learn together how to send mail in laravel and with templates also.

Setup A Form

First of all you have to install Laravel ( composer create-proeject laravel/laravel sendmail). After doing that you have to setup a form when we do install laravel application we always have welcome.blade.php file in our views folder. So, first of all create a form in that welcome.blade.php file.

<!DOCTYPE html>
<html lang="en">

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Send Mail</title>
    <link href="" rel="stylesheet"
        integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

    <div class="container">
        <div class="row py-5 my-5 mx-5 px-5">
            <h2>Send Mail</h2>
            <form action="{{route('sendmail')}}" class="form" method="POST">
                <div class="row">
                    <div class="col-lg-6">
                        <input type="email" name="email" placeholder="email" class="form-control">
                    <div class="col-lg-6">
                        <input type="text" name="title" class="form-control" placeholder="title">
                    <div class="col-lg-12 pt-2">
                        <textarea name="content" placeholder="write..." class="form-control" cols="30"
                    <div class="col-lg-12 pt-2">
                        <button class="btn btn-primary" type="submit">Send</button>


After doing this we will have a form on our first page that will be the welcome page. And my friend, when you did that then you might have an urge to save this form because without a database form is nothing. okay, But we are not going to save it into the database. Do you know why because we don’t need to save it? We will send mail directly from form to user. Let’s see how?

Setup .env File

In the .env file, we keep our configuration details. Mostly we use database configuration and mail. So, before going forward we have to do with our .env file, and let’s see the code.


Rather than using my own details, I do prefer to use It provides you a temporary username and password so that you can test your mail in laravel or in another application as well.

Make Mail

Before going to any other point let’s make mail first because without mail we are not going to do anything. Okay, We will use the command to create mail like this.

php artisan make:mail sendmail --markdown=emails.sendmail

When you will hit this command you will get a folder of emails into your resource > views directory. And also you will get another directory in your App directory (App/Mail) and in this, you will have a mailable file so that you can send mail easily.


namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class sendmail extends Mailable
    use Queueable, SerializesModels;
public $subject;
public $content;
     * Create a new message instance.
     * @return void
    public function __construct($subject,$content)
        $this->subject = $subject;
        $this->content = $content;

     * Build the message.
     * @return $this
    public function build()
        return $this->markdown('emails.sendmail')->from('')->subject($this->subject)->with('body',$this->content);

Make Controller

dude, you know that without a controller how we can move forward. So, let’s make the controller first.

php artisan make:controller mailsend

Now, we have a controller that can’t do anything without a route, In this controller, we will configure mail and send it to the user. Let’s see the controller code and how we will do this.


namespace App\Http\Controllers;

use App\Mail\sendmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class MailController extends Controller
    public function send(Request $request){

        Mail::to($request->email)->send(new sendmail($request->title,$request->content));
        return back();

Make Route

After setting up the controller and mail file. We just need the route to handle all the requests. We will not run so much of requests but we need a route because the route is main part in this process without route we can’t do anything. Let’s make a route to handle form requests.


use App\Http\Controllers\MailController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');


Now the setup is done and to use the template we have to use the blade file and in blade we would have a markdown template.

🚀 Ready to Supercharge Your Hosting? Support Us Too! 💰

👉 Buy Hosting Now Your support means the world to us! It enables us to keep delivering quality articles, tutorials, and expert insights to help you thrive in the digital world.

Plus, you get top-tier hosting for your website! It’s a win-win. 🌟 Thank you for being a part of our community.

# Introduction


@component('mail::button', ['url' => ''])
Button Text

{{ config('') }}

And after doing this setup you can receive mail in your mail trap account.


I hope you will learn from this tutorial. But I learned a lot of things from this. If you do like these kinds of content and content about web development you can subscribe to my youtube channel also.

Let’s learn together and learn fast


Leave a Comment