Step-by-Step Guide: Sending Welcome Emails in Laravel After User Registration

Sending a welcome email after user registration in Laravel involves several steps, including configuring email settings, creating a Mailable class, and triggering the email. Here's a step-by-step guide:

Step 1: Configure Mail Settings

Open your `.env` file and configure your mail settings. You can use services like Google Business, Mailgun, SMTP, or other providers. Here's an example using SMTP with Mailtrap:







Replace `your_mailtrap_username` and `your_mailtrap_password` with your Mailtrap credentials. Adjust other settings as needed.

Step 2: Create a Mailable Class

Laravel provides a simple way to create Mailable classes. Run this Artisan command to create one:

php artisan make:mail WelcomeEmail

This command will generate a Mailable class in the `app/Mail` directory.

Step 3: Customize the Mailable

Edit the generated `WelcomeEmail.php` file to customize the email content. You can define the subject, view, and pass data to the view. Here's an example:

// app/Mail/WelcomeEmail.php

use Illuminate\Mail\Mailable;

class WelcomeEmail extends Mailable


    public function build()


        return $this->subject('Welcome to Our Website')



                        'username' => $this->user->name,




Step 4: Create an Email Blade Template

Create a Blade template for the welcome email. By default, Laravel looks for templates in the `resources/views` directory. Create a folder named `emails` if it doesn't already exist and create a `welcome.blade.php` file inside it:

<!-- resources/views/emails/welcome.blade.php -->

<p>Hello, {{ $username }},</p>

<p>Welcome to our website! Thank you for registering.</p>

Step 5: Send the Welcome Email

In your registration controller, after successfully registering a new user, send the welcome email using the Mailable class you created earlier. Here's an example within your controller:

use App\Http\Controllers\Controller;

use App\Mail\WelcomeEmail;

use Illuminate\Support\Facades\Mail;

class RegistrationController extends Controller


    public function register(Request $request)


        // Your registration logic here

        // Send the welcome email

        Mail::to($user->email)->send(new WelcomeEmail($user));

        // Redirect or return a response



Make sure to import the necessary classes at the top of your controller.

Step 6: Trigger the Registration Controller

Make sure your registration controller gets triggered when a user registers on your site. Typically, this is done through a registration form that submits data to the controller.

Step 7: Handle Email Sending

You might want to handle exceptions and errors related to email sending in a production environment. Laravel's Mail system provides options for handling such cases.

That's it! After successfully registering, your users will receive a welcome email.

Remember to customize this example to suit your specific application's needs and design preferences.