How to Send Mail in Laravel Using SMTP

Laravel 8 is a powerful PHP framework that makes it easy to develop web applications. One of the important features of Laravel is its ability to send emails. Laravel has built-in support for sending emails, which makes it easy for developers to send emails directly from their application. In this article, we will discuss how to send mail in Laravel 8 using SMTP.

Introduction

Sending emails is an important part of many web applications. Whether it is for sending a welcome email to a new user or notifying users about a new feature, sending emails can help improve the user experience of an application. Laravel provides several ways to send emails, including using the built-in Mail class or by configuring an SMTP server.

Prerequisites

Before we begin, you need to make sure that you have the following:

  • Laravel 8 installed on your system
  • An SMTP server that you can use to send emails

Step 1: Install Required Packages

The first step is to install the required packages. Laravel uses the SwiftMailer library to send emails, so we need to install it using Composer. Open your terminal and run the following command:

composer require swiftmailer/swiftmailer

This command will download and install the SwiftMailer library in your Laravel project.

Read Also : How to send email using cron job in laravel 8

Step 2: Configure Mail Settings

Next, we need to configure the mail settings in our Laravel project. Laravel provides a configuration file for mail settings, which is located at config/mail.php. Open this file and set the driver option to smtp. This tells Laravel to use the SMTP driver to send emails.

'driver' => 'smtp',

Next, we need to set the SMTP server settings. We can do this by adding the following options to the mail array:

'smtp' => [    'transport' => 'smtp',    'host' => env('MAIL_HOST'),    'port' => env('MAIL_PORT'),    'encryption' => env('MAIL_ENCRYPTION'),    'username' => env('MAIL_USERNAME'),    'password' => env('MAIL_PASSWORD'),    'timeout' => null,    'auth_mode' => null,],

Make sure to set the MAIL_HOST, MAIL_PORT, MAIL_ENCRYPTION, MAIL_USERNAME, and MAIL_PASSWORD options in your .env file.

Step 3: Create a Mailable Class

Now, we need to create a mailable class that will define the email that we want to send. To create a mailable class, run the following Artisan command:

php artisan make:mail WelcomeMail

This will create a WelcomeMail class in the app/Mail directory.

Read Also : How to generate pdf using tcpdf in laravel with example

Step 4: Define the Email

Next, we need to define the email that we want to send. Open the app/Mail/WelcomeMail.php file and define the build method. This method should return a view that will be used as the email body.

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

In this example, we are using the view method to return a view named emails.welcome. This view should contain the HTML for the email body.

Step 5: Send the Email

Finally, we can send the email using the Mail facade. To send the email, we can use the following code:

use App\Mail\WelcomeMail;use Illuminate\Support\Facades\Mail;Mail::to('user@example.com')->send(new WelcomeMail());

In this example, we are using the to method to specify the recipient of the email and the send method to send the email. We are also passing an instance of the WelcomeMail class to the send method.

Read Also : How to Send Mail in Laravel Using SMTP: A Step-by-Step Guide

Alternative Methods to Send Mail in Laravel

Apart from sending mail using SMTP, Laravel provides several other methods to send mail as well:

  1. Mailgun: Laravel provides built-in support for Mailgun, which is a popular email service provider. To use Mailgun, you need to configure the mailgun driver in the config/mail.php file and set the MAILGUN_DOMAIN and MAILGUN_SECRET options in your .env file.
  2. Sendmail: Laravel also supports sending emails using the Sendmail command. To use Sendmail, you need to configure the sendmail driver in the config/mail.php file.
  3. Amazon SES: Laravel provides support for Amazon SES, which is a cloud-based email service provided by Amazon. To use Amazon SES, you need to configure the ses driver in the config/mail.php file and set the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_REGION options in your .env file.

Conclusion

Sending emails is an essential part of many web applications, and Laravel makes it easy to send emails directly from your application. In this article, we discussed how to send mail in Laravel 8 using SMTP. We covered the steps to install required packages, configure mail settings, create a mailable class, define the email, and send the email using the Mail facade. We also discussed alternative methods to send mail, including Mailgun, Sendmail, and Amazon SES. By using Laravel’s built-in mail functionality, you can easily send emails and improve the user experience of your web application.

Comments