Introduction
How will this email look? Will it look nice on mobile? Is the email data correct? You can test all that and more with Mailtrap.
Mailtrap is a testing tool designed to trap any emails coming out of your application. Setting up Mailtrap is a must for your development environment, this way you can test your application functionalities without worrying about spamming real users.
Step 1: Mailtrap Account
Go to https://mailtrap.io/ and sign up.
Once you are logged in you will see a menu with 3 options; Inboxes, API, and Billing. Go to Inboxes.
On the Inboxes page you will see a list of your inboxes and you will also have the option of creating a new project or creating a new inbox. We will use the default inbox for this setup.
Click on the inbox and on SMTP Settings select Integrations -> Laravel.
- Here you will see the .env variables you need to copy.
Step 2: Laravel Configuration
Add (or replace) mail environment variables from Mailtrap to your application .env file.
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=YOUR_INBOX_USERNAME
MAIL_PASSWORD=YOUR_INBOX_PASSWORD
MAIL_ENCRYPTION=tls
# Also
MAIL_FROM_ADDRESS=no-reply@test.local
MAIL_FROM_NAME="Mailtrap Test App"
Step 3: Test
Create simple test mailable with markdown.
php artisan make:mail MailtrapTest --markdown=emails.test
App\Mail\MailtrapTest.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class MailtrapTest extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->markdown('emails.test');
}
}
resources\views\emails\test.blade.php (Markdown file)
@component('mail::message')
# TEST EMAIL
The cake is a lie
Thanks,<br>
{{ config('app.name') }}
@endcomponent
Add test route
...
...
Route::get('/mailtrap/test', function () {
// Using a temp email.
// This way we can test that emails are really trapped.
$testEmail = 'rognodugni@vusra.com';
return Mail::to($testEmail)->send(new MailtrapTest());
});
...
...
Now hit test URL. You should have a new email on your Mailtrap inbox and you should not have any email from your application on the test email inbox.
Conclusion
Mailtrap is a very useful tool for development and it's super easy to setup with Laravel. You can find more information at https://mailtrap.io/blog/send-email-in-laravel/
I hope this article was helpful.
If you have any feedback or found mistakes, please don’t hesitate to reach out to me.
Top comments (0)