blog images
How to Send Email in Laravel using SMTP

Today we are going to explain how to send email in Laravel using STMP. Laravel is PHP based framework that comes with a simple API to send emails via SMTP from localhost or Hosted online. You can easily use the 'Mailable' class to build an email function. You can also send customized data explicitly using the with() a method. Can Use SMTP Mails service providers like Google, Yahoo, Webmail and etc

Laravel Send Email via SMTP

Configure email setting in 'config\mail.php' Like MAIL_DRIVER, MAIL_HOST, MAIL_PORT, etc.

Here are the steps to send mail using the SMTP server in laravel.

Step 1:
First, install the latest version of laravel. Below is the command to install Laravel

composer create-project laravel/laravel project_name --prefer-dist

Step 2:
open up the '.env' file and configure the email settings. Here we are using email client as Gmail

Gmail SMTP Settings:
Host Name: smtp.gmail.com
Smtp Port: 587(tls), 465(ssl)
Encryption: tls/ssl

Your '.env' file should look like given below 

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=your_gmail_id
MAIL_PASSWORD=your_gmail_password
MAIL_ENCRYPTION=ssl

Step 3:
Then generate the mailable class. Fire up the below command on the command prompt.

php artisan make:mail SendeMail

This will create 'SendeMail.php' file inside 'App\Mail' folder.

SendMail.php

<?php
namespace App\Mail;

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

class WelcomeUser extends Mailable
{
    use Queueable, SerializesModels;
 
    public $uname;

    public function __construct($uname)
    {
        $this->uname = $uname;
    }

    public function build()
    {
        return $this->view('email.welcome');
    }
}
?>

 

Setp 4:

Create a View file. This will contain the template of our email. Create 'email' folder inside 'views' and place 'welcome.blade.php' file. below are the simple view template 

welcome.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Welcome User</title>
</head>
<body>
 <div>
  <h2>Hi {{ $uname }}! Welcome to KodingMadeSimple.com<h2>
 </div>
</body>
</html>

 

Step 5:
Create a contoller file with comment give below 

php artisan make:controller MailController

And Open the 'MailController.php' file inside 'App\Http\Controllers' folder and add send_mail() function

MailController.php

<?php
...

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

...

public function send_email()
{
 $user_name = 'John Anderson';
 $to = '[email protected]'
 Mail::to($to)->send(new WelcomeUser($user_name));
 return 'Mail sent successfully';
}
?>

Step 6:
Add route for our MailController send_mail() function. router file will be in this path 'routes\web.php'

Route::get('/user/sendmail', '[email protected]_email');

Open your browser and Run the code