Skip to main content

Command Palette

Search for a command to run...

Sending Emails in Laravel with Mailtrap: A Beginner's Guide

Learn how to configure Laravel’s mail system with Mailtrap for local testing and debugging.

Published
3 min read
Sending Emails in Laravel with Mailtrap: A Beginner's Guide
R

Laravel developer with 10+ years experience building scalable backends, APIs, and full-stack systems. 💡 Expect posts about: Laravel design patterns Stripe & Twilio integrations RESTful API tips Docker for Laravel devs AWS setups for backend scaling Let’s learn & build together 🚀

Ever tried sending a test email in your Laravel app and ended up spamming your real inbox? If yes, then you’ll love what Mailtrap can do for you.

In this tutorial, we’ll walk through how to send and test emails safely in Laravel using Mailtrap, step by step.


What Is Mailtrap?

Mailtrap is a fake SMTP server designed for developers. Instead of sending real emails, it captures them in a virtual inbox where you can preview, debug, and validate everything safely.

Why use Mailtrap?

  • ✅ No accidental spam to real users

  • ✅ See email headers, body, and attachments

  • ✅ Test HTML and plain text versions

  • ✅ Free tier for small projects

It’s like a playground for testing emails, no risk, no mess!


Step 1: Set Up a New Laravel Project

If you don’t already have a project, open your terminal and run:

composer create-project laravel/laravel email-demo
cd email-demo

Once installed, you can serve your app using:

php artisan serve

Step 2: Create a Mailtrap Account

Head over to Mailtrap.io and sign up for a free account.

  • Create a new Inbox

  • Go to SMTP Settings

  • Copy your host, port, username, and password

You’ll use these credentials in your Laravel .env file.


Step 3: Configure Your .env File

Open .env and update the mail configuration with your Mailtrap details:

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_mailtrap_username
MAIL_PASSWORD=your_mailtrap_password
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=hello@example.com
MAIL_FROM_NAME="${APP_NAME}"

Save the file.


Step 4: Create a Mailable Class

Laravel’s Mailable class makes sending emails super simple.

Run this command:

php artisan make:mail WelcomeMail

Then open app/Mail/WelcomeMail.php and edit it:

<?php

namespace App\Mail;

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

class WelcomeMail extends Mailable
{
    use Queueable, SerializesModels;

    public function build()
    {
        return $this->subject('Welcome to Our App!')
                    ->view('emails.welcome');
    }
}

Step 5: Create the Email View

Now let’s make a simple Blade view. Create a file at resources/views/emails/welcome.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome Email</title>
</head>
<body>
    <h1>Hey there!</h1>
    <p>Thanks for joining our app. We’re thrilled to have you on board</p>
</body>
</html>

Step 6: Send a Test Email

To test your setup, add a route in routes/web.php:

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

Route::get('/send-mail', function () {
    Mail::to('test@example.com')->send(new WelcomeMail());
    return 'Email sent!';
});

Now open your browser and visit: http://127.0.0.1:8000/send-mail

If everything’s correct, you’ll see your test email in your Mailtrap inbox!


Step 7: Preview & Debug

Go to your Mailtrap Inbox. You’ll see your test email with all details: subject, headers, and rendered HTML.

This is super helpful for debugging layouts, checking links, or testing dynamic content before going live.


Common Mistakes to Avoid

Using Mailtrap in production, it’s only for testing! Wrong credentials in .env file ✅ Always clear cache after updating .env:

php artisan config:clear

Quick Recap

Here’s what we learned today: ✅ What Mailtrap is and why it’s useful ✅ How to configure Laravel’s mail settings ✅ How to create and send a test email ✅ How to safely preview your emails

With this setup, you’ll never worry about spamming real users again.


Final Thoughts

Sending emails is a fundamental part of almost every web app whether it’s for password resets, confirmations, or newsletters.

Mailtrap makes testing this process safe, clean, and efficient.

If you found this helpful, try adding your own email templates next or integrate dynamic data like user names, order IDs, etc.

Keep coding, keep learning. 💻


#Laravel #Mailtrap #WebDevelopment #BackendDevelopment #PHPDevelopers #LaravelBeginners #CodingJourney #OOPsJunction #LearnLaravel #SoftwareEngineering #WebDevCommunity

Sending Emails in Laravel with Mailtrap: A Beginner's Guide