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->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)->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]”.