Laravel Packages

Laravel Mailbox

Published
Laravel Mailbox image

Laravel Mailbox is a package by Marcel Pociot for handling incoming emails in your Laravel application. Mailbox features a fluent API that allows you to define custom mailboxes to catch incoming emails.

Here’s a quick example of an inbound email handler from the documentation:

Mailbox::from('{username}@gmail.com', function (InboundEmail $email, $username) {
// Access email attributes and content
$subject = $email->subject();
 
$email->reply(new ReplyMailable);
});

Laravel Mailbox works by listening for incoming emails from the supported drivers (options include “mailgun,” “sendgrid,” and “log”) and then responding to them through custom mailbox classes. At a basic level, here’s an example of how you can define a mailbox in a service provider:

use BeyondCode\Mailbox\Facades\Mailbox;
 
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Mailbox::from('sender@domain.com', function (InboundEmail $email) {
// Handle the incoming email
});
}
}

The above example uses a closure, but the second argument can also be an invocable class:

Mailbox::from('sender@domain.com', MyMailbox::class);

By default, this package stores all inbound emails in the database, with a configurable duration to keep them. You can use Laravel’s scheduler with the package’s ‘mailbox:clean’ command, which will remove emails from the database older than the configurable duration to keep them. Check the storing emails documentation for further details.

Out of the box, Mailbox supports Mailgun, Sendgrid, and a local development driver/log. However, you can easily extend/add custom drivers—Laravel Mailbox uses the same manager pattern that is familiar to Laravel users (i.e., database drivers).

To learn more about Laravel Mailbox, you can check out the source code on GitHub at beyondcode/laravel-mailbox. To learn how to install and use the package, check out the Laravel Mailbox documentation.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Cancel In-Flight Form Submissions in Inertia.js v3.7 image

Cancel In-Flight Form Submissions in Inertia.js v3.7

Read article
Laravel Starter Kits Now Ship with Vite+ image

Laravel Starter Kits Now Ship with Vite+

Read article
Pessimistic Locking in Laravel Eloquent with refreshForUpdate() image

Pessimistic Locking in Laravel Eloquent with refreshForUpdate()

Read article
Mask Query Bindings in Laravel Exception Messages image

Mask Query Bindings in Laravel Exception Messages

Read article
whereBinary(): Case-Sensitive MySQL Queries in Laravel image

whereBinary(): Case-Sensitive MySQL Queries in Laravel

Read article
Compile PHP to Native Binaries with TypePHP image

Compile PHP to Native Binaries with TypePHP

Read article