Laravel Mailable: The new and improved way to send email in Laravel
Published on by Eric L. Barnes
A new feature in Laravel 5.3 is a way to simplify sending email by creating “mailable” classes that handle setting up your emails.
The best way to explain this feature is with an example. In Laravel 5.2 you would typically send an email like the following that is outlined in the documentation:
Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) { $m->from('hello@app.com', 'Your Application'); $m->to($user->email, $user->name)->subject('Your Reminder!');});
A lot is going on in those four lines of code. You pass a view, data to assign to the view, use the “user” in the closure, and finally setup your message.
Now in Laravel 5.3 you can simplify this by utilizing a “mailable” class.
php artisan make:mail YourReminder
Next, open the new class that is created and all of a mailable configuration is done in the build
method. Within this, you may call various methods such as from
, subject
, view
, and attach
to configure the email’s presentation and delivery. Here is a minimal example:
public function build(){ return $this->from('example@example.com') ->view('emails.reminder');}
Now, anytime you want to send this email you can call it like this:
Mail::to($email)->send(new YourReminder);
All of the existing mail features still work. You can queue
, add cc
, bcc
, attach files and more.
If you’d like to learn more about Laravel Mailable here are a few resources to help you on your journey:
Eric is the creator of Laravel News and has been covering Laravel since 2012.