Integrations

Send emails using Laravel's MailerSend driver

Use the MailerSend mailer driver in Laravel to send emails
Developer
Price

Last Updated

18/07/2023

Integration Support

See the documentation.

Additional details

Find the Laravel documentation to use the MailerSend driver.

Setup

You can install the package via composer:

composer require mailersend/laravel-driver

After that, you need to set MAILERSENDAPIKEY in your .env file:

MAILERSEND_API_KEY=

Add MailerSend as a Laravel Mailer in config/mail.php in the mailers array:

'mailersend' => [
    'transport' => 'mailersend',
],

And put the environment variable MAIL_MAILER in your .env file

MAIL_MAILER=mailersend

Also, double-check that your FROM data is filled in .env:

MAIL_FROM_ADDRESS=app@yourdomain.com
MAIL_FROM_NAME="App Name"

Usage

This is an example mailable that you can use to send an email.

app/Mail/TestEmail.php
namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Arr;
use MailerSend\Helpers\Builder\Variable;
use MailerSend\Helpers\Builder\Personalization;
use MailerSend\LaravelDriver\MailerSendTrait;

class TestEmail extends Mailable
{
    use Queueable, SerializesModels, MailerSendTrait;

    public function build()
    {
        // Recipient for use with variables and/or personalization
        $to = Arr::get($this->to, '0.address');

        return $this
            ->view('emails.test_html')
            ->text('emails.test_text')
            ->attachFromStorageDisk('public', 'example.png')
            // Additional options for MailerSend API features
            ->mailersend(
                template_id: null,
                variables: [
                    new Variable($to, ['name' => 'Your Name'])
                ],
                tags: ['tag'],
                personalization: [
                    new Personalization($to, [
                        'var' => 'variable',
                        'number' => 123,
                        'object' => [
                            'key' => 'object-value'
                        ],
                        'objectCollection' => [
                            [
                                'name' => 'John'
                            ],
                            [
                                'name' => 'Patrick'
                            ]
                        ],
                    ])
                ],
                precedenceBulkHeader: true,
                sendAt: new Carbon('2022-01-28 11:53:20'),
            );
    }
}

We provide a MailerSendTrait trait that adds a mailersend method to the mailable and allows you to use additional options available through our API.

After creating the mailable, you can send it using:

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

Mail::to('recipient@domain.com')
    ->cc('cc@domain.com')
    ->bcc('bcc@domain.com')
    ->send(new TestEmail());

Please refer to Laravel Mail documenation and MailerSend API documentation for more information.

Support and Feedback

If you find any bugs, submit an issue directly on GitHub.