How to Send Email Into Laravel 7/8/9 Using SMTP

This is a simple laravel tutorial that helps to send email using laravel 9. We will use a blade template to create a view for email content.

We will create a feedback form that has user inputs, The feedback content will send to the target email ids using the mail class.

You can send emails into laravel 9 using “mailable” class. Each type of mail sent by laravel uses the “mailable” class. All mailable classes are stored in app/Mail directory. if you don’t find in your application, don’t worry it will be generated when you will create your first mailable class using the command.

Video Tutorial:

If you are more comfortable in watching a video that explains about How to Send Email Into Laravel 7/9 Using SMTP, then you should watch this video tutorial.

Send Mail in Laravel

Laravel provides a clean, simple mail API over the great SwiftMailer library with drivers for SMTP, Mailgun, SparkPost, Amazon SES, PHP’s mail function, and sendemail.

Step 1: Install Laravel 9 application
We will start this send mail example by downloading latest laravel 0.

composer create-project laravel/laravel email-send-example --prefer-dist

Step 2: Email Configuration –
We will define the Email configuration into the .env file of laravel application.

MAIL_DRIVER=smtp
MAIL_HOST=smtp-hostname
MAIL_PORT=25
MAIL_USERNAME= // some username
MAIL_PASSWORD= // some password
MAIL_ENCRYPTION=null

You need to replace above credentials as per your company profile.

Step 3: We will create Mailable class into laravel application.Go to a terminal window and run the following command.

php artisan make:mail FeedbackMail

Above command will create a Mailable class FeedbackMail.php inside App\Mail folder. Now, this class contains one property which is a feedback content.

<?php

namespace App\Mail;

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

class FeedbackMail extends Mailable
{
    use Queueable, SerializesModels;
    public $feedback;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($feedback)
    {
        $this--->feedback = $feedback;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this-&gt;view('emails.feedback');
    }
}

Above class have a parameterized constructor. We will pass feedback content as a parameters when we build this class’s instance.We have used feedback.blade.php file that are inside views/emails folder.

The view file use $feedback variable and display the message into the email template.

Step 4: Create an email view file.
We will create a feedback.blade.php file into the views/emails folder.This file have email template layout with HTML content.

<div class="well col-sm-8">{{ $feedback }}</div>

Step 5: Define the route into the laravel application.
Now, Open the routes web.php file from the routes/ folder, We will make one entry here to send feedback mail.

Route::get('/send/send_feedback', 'HomeController@sendFeedback');

Now, We need to write the code inside mail function to send an email.

// HomeController.php

use Illuminate\Support\Facades\Mail;
use App\Mail\FeedbackMail;

public function sendFeedback()
{
   $comment = 'Hi, This test feedback.';
   $toEmail = "[email protected]";
   Mail::to($toEmail)-&gt;send(new FeedbackMail($comment));
   
   return 'Email has been sent to '. $toEmail;
}

We have imported Mailable and Mail facade for send mail.

How to test mail in Laravel 9

Now we run the application, Go to your terminal and hit the following command to run laravel application.

php artisan serve

Now open URL: http://localhost:8000/send/send_feedback into your favorite browser.

If everything is right then you will get message “Email has been sent to [email protected].

Leave a Reply

Your email address will not be published. Required fields are marked *