brouzie/mailer
Laravel mailer helper package providing a simple interface to send emails via common drivers, with configuration support and utilities for composing messages and managing transports. Suitable for lightweight apps needing straightforward mail sending.
Installation
composer require brouzie/mailer
Publish the config file (if needed):
php artisan vendor:publish --provider="Brouzie\Mailer\MailerServiceProvider"
Basic Configuration
Ensure your .env has valid mail settings (SMTP/mailgun/etc.) and update config/mailer.php if the package requires customization.
First Use Case: Sending a Simple Email
use Brouzie\Mailer\Facades\Mailer;
Mailer::send('emails.welcome', ['name' => 'John'], function ($message) {
$message->to('user@example.com')
->subject('Welcome!');
});
config/mailer.php for default settings and resources/views/emails/ for template examples.Template-Based Emails
resources/views/emails/ (e.g., welcome.blade.php).Mailer::send('emails.invoice', ['user' => $user, 'total' => $total], $callback);
Queueing Emails
Mailer::queue('emails.notification', ['data' => $data], $callback);
config/mail.php.Attachments & Inline Assets
$message->attach('path/to/file.pdf');
$message->embed('path/to/image.png', 'cid:unique-id');
Customizing the Mailer Instance
Mailer::setFrom('custom@example.com');
Mailer::setQueue('mailgun');
event(new UserRegistered($user)); // Dispatcher calls Mailer in listener.
return response()->json(['success' => true])->withMailer('emails.api_success');
Mail::fake() with the package’s facade:
Mailer::shouldReceive('send')->once();
Template Paths
resources/views/emails/ or specify a custom path in config.view.paths in config/mailer.php includes resources/views/emails.Queue Configuration
config/mail.php.php artisan queue:work).php artisan queue:failed-table and php artisan queue:work --once.Facade vs. Service Container
new Brouzie\Mailer\Mailer(); use the facade (Mailer::) or resolve via container:
$mailer = app(Brouzie\Mailer\Mailer::class);
Missing Dependencies
Mail facade. Ensure laravel/framework is installed..env:
MAIL_LOG=true
Mail::raw() for debugging:
Mailer::raw('Test body', function ($message) { ... });
php artisan config:clear if changes to config/mailer.php aren’t applied.Custom Mailables
Mailable class:
use Brouzie\Mailer\Mailable;
class CustomMailable extends Mailable {
public function build() {
return $this->view('custom.template');
}
}
MailerServiceProvider.Hooks
beforeSend/afterSend in config:
'events' => [
'beforeSend' => \App\Listeners\LogEmail::class,
],
Dynamic Recipients
to/cc/bcc:
$message->to(function ($message) {
return $message->user()->pluck('email');
});
How can I help you explore Laravel packages today?