mailjet/laravel-mailjet

Laravel package for Mailjet API V3 and Laravel Mailjet Mail Transport
1,759,874 110
Install
composer require mailjet/laravel-mailjet
Latest Version:3.1.3
PHP:^7.4|^8.0
License:MIT
Last Updated:Feb 26, 2026
Links: GitHub  ·  Packagist
Maintainer: Mailjet

Laravel Mailjet

Fluent Mailjet API v3 integration & mail transport for Laravel.

Send transactional mail through the Laravel Mail facade, or talk to the full Mailjet REST API — contacts, lists, campaigns, templates and webhooks — with an expressive wrapper.

Latest Version Total Downloads PHP Version Laravel License


Table of contents


Features

  • 📨 Drop-in mail transport — set one env var and every Mailable / Notification goes through Mailjet.
  • 🧩 Full API v3 wrapper — low-level get / post / put / delete plus high-level helpers, built on the official mailjet/mailjet-apiv3-php client.
  • 🗂️ Resource managers — dedicated, injectable services for contacts, lists, metadata, campaigns, campaign drafts, templates and event callbacks.
  • 🧪 Sandbox mode — validate payloads in CI and local development without sending a single email.
  • Zero-config setup — package auto-discovery registers the provider and Mailjet facade for you.

Requirements

Package Supported versions
PHP 7.4 · 8.x
Laravel 9.x13.x
Symfony Mailer / Mailjet Mailer 6.x · 7.x · 8.x

Installation

composer require mailjet/laravel-mailjet

That's it. Package auto-discovery wires up the MailjetServiceProvider and the Mailjet facade automatically.

Laravel 11 and newerbootstrap/providers.php:

use Mailjet\LaravelMailjet\MailjetServiceProvider;

return [
    App\Providers\AppServiceProvider::class,
    MailjetServiceProvider::class,
];

Laravel 10 and olderconfig/app.php:

'providers' => [
    // ...
    Mailjet\LaravelMailjet\MailjetServiceProvider::class,
],

'aliases' => [
    // ...
    'Mailjet' => Mailjet\LaravelMailjet\Facades\Mailjet::class,
],

Configuration

Grab your API key and secret from the Mailjet account settings.

1. Add your credentials to .env:

MAILJET_APIKEY=your_api_key
MAILJET_APISECRET=your_api_secret

MAIL_FROM_ADDRESS=you@example.com
MAIL_FROM_NAME="Your App"

# Optional — process requests without actually sending
MAILJET_SANDBOX=false

2. Register the service in config/services.php:

'mailjet' => [
    'key'     => env('MAILJET_APIKEY'),
    'secret'  => env('MAILJET_APISECRET'),
    // filter_var keeps the "true"/"false" env string honest (handy in Docker)
    'sandbox' => filter_var(env('MAILJET_SANDBOX', false), FILTER_VALIDATE_BOOLEAN),
],

Need to tune the API URL, version, or the transactional/common/v4 clients? See the full configuration reference.

Sending mail with the Mailjet transport

1. Select the transport in .env:

MAIL_MAILER=mailjet

Laravel 6 and older use the MAIL_DRIVER key instead.

2. Declare the mailer in config/mail.php:

'mailers' => [
    // ...
    'mailjet' => [
        'transport' => 'mailjet',
    ],
],

3. Send as usual — no Mailjet-specific code required:

use Illuminate\Support\Facades\Mail;

Mail::to($user)->send(new InvoicePaid($invoice));

Make sure the from address is a verified Mailjet sender. More patterns (Mailjet templates, variables, custom headers) live in the examples guide.

Using the Mailjet API

Import the facade:

use Mailjet\LaravelMailjet\Facades\Mailjet;

Low-level requests

Mailjet::get($resource, $args, $options);
Mailjet::post($resource, $args, $options);
Mailjet::put($resource, $args, $options);
Mailjet::delete($resource, $args, $options);

Every call returns a Mailjet\Response, or throws a Mailjet\LaravelMailjet\Exception\MailjetException on an API error. Filter arguments are documented in the Mailjet API reference.

High-level helpers

Mailjet::getAllLists($filters);
Mailjet::createList($body);
Mailjet::getListRecipients($filters);
Mailjet::getSingleContact($id);
Mailjet::createContact($body);
Mailjet::createListRecipient($body);
Mailjet::editListrecipient($id, $body);

Custom requests

$client = Mailjet::getClient(); // the underlying \Mailjet\Client instance

Optional service providers

Each Mailjet resource has a focused, injectable manager. Register only the providers you use in config/app.php (or bootstrap/providers.php on Laravel 11+):

Service provider Manages Contract
Providers\ContactsServiceProvider Contacts, incl. deletion (API v4) ContactsV4Contract
Providers\ContactsListServiceProvider Contact lists ContactsListContract
Providers\ContactMetadataServiceProvider Contact properties / metadata ContactMetadataContract
Providers\CampaignServiceProvider Campaigns CampaignContract
Providers\CampaignDraftServiceProvider Campaign drafts CampaignDraftContract
Providers\TemplateServiceProvider Templates TemplateServiceContract
Providers\EventCallbackUrlServiceProvider Event (webhook) callback URLs EventCallbackUrlContract
// config/app.php
'providers' => [
    // ...
    Mailjet\LaravelMailjet\Providers\ContactsServiceProvider::class,
],

Then resolve the manager wherever you need it:

use Mailjet\LaravelMailjet\Services\ContactsV4Service;

public function handle(ContactsV4Service $contacts)
{
    $contacts->delete(351406781);
}

Sandbox mode

With MAILJET_SANDBOX=true, Mailjet validates the request and returns a successful response without delivering any email — ideal for staging environments and automated tests.

MAILJET_SANDBOX=true

Details in the configuration reference.

Documentation

Resource Link
Configuration reference docs/configuration.md
Examples (campaigns, templates, Mailables) docs/usage.md
Full docs site https://mailjet.github.io/laravel-mailjet/
Mailjet API v3 https://dev.mailjet.com/
PHP API client https://github.com/mailjet/mailjet-apiv3-php

Testing

composer install
bin/phpunit

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md.

License

Released under the MIT License.

Related Packages

thedoctor0/laravel-mailjet-driver

Laravel mail driver package for Mailjet and wrapper for its API. Supports Larave...

270,504 32
staufenbiel/laravel

Staufenbiel Codebase powered by Laravel Framework.

31 0
laravel-ja/laravel

The Laravel Framework.

5,667 17
laravel/laravel

The skeleton application for the Laravel framework.

64,400,768 84,869
fenzland/laravel

The Laravel Framework.

64 1