The Wayback Machine - https://web.archive.org/web/20201203061016/https://github.com/mailjet/MailjetSwiftMailer
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

MailjetSwiftMailer

Build Status Packagist Packagist GitHub license

A SwiftMailer transport implementation for Mailjet ([NEW] we now support send API v3.1 ) Mailjet Send API v3.1 Compatible Mailjet send API V3 and V3.1

If you found any problem, feel free to open an issue!

TODO

  • Adding URL tags
  • Sandbox Mode
  • Improve unit-tests (lots of code duplications)

Installation

Require the package with composer

composer require mailjet/mailjet-swiftmailer

Usage Example

$transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret);
$transport->setClientOptions(['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => true]);


$transport->send($message);

(Send API v3 is selected by default)

Mailjet client custom configuration

You can pass an array in transport's constructor or use setClientOptions function:

$clientOptions = ['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => false];
$transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret, $clientOptions);


or

$transport->setClientOptions(['url' => "api.mailjet.com", 'version' => 'v3.1', 'call' => true]);

Properties of $options:

  • url (Default: api.mailjet.com) : domain name of the API
  • version (Default: v3) : API version (only working for Mailjet API V3 +)
  • call (Default: true) : turns on(true) / off the call to the API
  • secured (Default: true) : turns on(true) / off the use of 'https'

Mailjet custom headers

It is possible to set specific Mailjet headers or custom user-defined headers, through SwiftMailer.

For example:

$headers = $message->getHeaders();

$headers->addTextHeader('X-MJ-TemplateID', $templateId);
$headers->addTextHeader('X-MJ-TemplateLanguage', true);
$vars = array("myFirstVar" => "foo", "mySecondVar" => "bar");
$headers->addTextHeader('X-MJ-Vars', json_encode($vars));

Note: You need to json_encodeyour array of variables in order to be compatible with SMTP transport.

Mailjet bulk sending

$emails = ['f001@bar.com', 'f002@bar.com', 'f003@bar.com', 'f004@bar.com', 'f005@bar.com', 'f006@bar.com', ...]

$messages = [];
foreach ($emails as $email) {
    $message = new \Swift_Message('Test Subject', '<p>Foo bar</p>', 'text/html');
    $message
        ->addTo($email)
        ->addFrom('from@example.com', 'From Name')
        ->addReplyTo('reply-to@example.com', 'Reply To Name')
    ;

    array_push($messages, $message);
}
$transport = new MailjetTransport($dispatchEvent, $apiKey, $apiSecret);
$result = $transport->bulkSend($messages);

Note: does not work with Spool (SwiftMailer removed bulkSend from its API).

Integration in Symfony

If you want to use MailjetTransport in your Symfony project follow these small steps:

  1. composer require mailjet/mailjet-swiftmailer
  2. Into your services.yml, register MailjetTransport:
swiftmailer.mailer.transport.mailjet:
    class: Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport
    arguments:
        - "@swiftmailer.transport.eventdispatcher.mailjet"
        - "%mailjet.api_key%"
        - "%mailjet.secret_key%"

Note: We set mailjet.api_key and mailjet.secret_key into parameters.yml

  1. Finally, configure SwiftMailer in your config.yml:
# Swiftmailer Configuration
swiftmailer:
    transport: mailjet

Note: You can also inject your own Mailjet\Client:

mailjet.transactionnal.client:
    class: "%mailjet.client.class%"
    arguments:
        - "%mailjet.api_key%"
        - "%mailjet.secret_key%"
        - %mailjet.transactionnal.call%
        - %mailjet.transactionnal.options%

swiftmailer.transport.eventdispatcher.mailjet:
    class: Swift_Events_SimpleEventDispatcher

swiftmailer.mailer.transport.mailjet:
    class: Mailjet\MailjetSwiftMailer\SwiftMailer\MailjetTransport
    arguments:
        - "@swiftmailer.transport.eventdispatcher.mailjet"
        - "%mailjet.api_key%"
        - "%mailjet.secret_key%"
        - %mailjet.transactionnal.call%
        - %mailjet.transactionnal.options%
    calls:
        - method: setExternalMailjetClient
          arguments:
              - '@mailjet.transactionnal.client'

Mailjet references

Execute Tests

vendor/bin/phpunit -c .

Contributing

If you want to contribute to this project, look at over here

You can’t perform that action at this time.