boundstate/yii2-mailgun

Mailgun integration for the Yii framework


Keywords
mail, mailer, email, extension, rackspace, mailgun, yii2, yii
License
Apache-2.0

Documentation

Mailgun Extension for Yii 2

This extension provides a Mailgun mail solution for Yii framework 2.0.

Latest Stable Version Total Downloads Build Status

Installation

The preferred way to install this extension is through composer.

composer require boundstate/yii2-mailgun

The Mailgun API Client is not hard coupled to Guzzle, Buzz or any other library that sends HTTP messages. You must also install the PSR-7 implementation and HTTP client you want to use.

If you just want to get started quickly you should install Buzz and nyholm/psr7:

composer require kriswallsmith/buzz nyholm/psr7

Usage

To use this extension, simply add the following code in your application configuration:

return [
    //....
    'components' => [
        'mailer' => [
            'class' => 'boundstate\mailgun\Mailer',
            'key' => 'key-example',
            'domain' => 'mg.example.com',
        ],
    ],
];

You can then send an email as follows:

Yii::$app->mailer->compose('contact/html', ['contactForm' => $form])
    ->setFrom('from@domain.com')
    ->setTo($form->email)
    ->setSubject($form->subject)
    ->send();

You can also specify an array of addresses and/or speicfy names:

$message->setTo(['bob@example.com' => 'Bob']);

Warning: By default all recipients' email address will show up in the to field for each recipient. Enable batch sending to avoid this.

Batch Sending

When batch sending is enabled, Mailgun sends each recipient an individual email with only their email in the to field.

To use batch sending, set the messageClass to boundstate\mailgun\BatchMessage in your application configuration:

'mailer' => [
    'class' => 'boundstate\mailgun\Mailer',
    'messageClass' => 'boundstate\mailgun\BatchMessage',
    // ...
]

Composing a batch email is similar to regular emails, except you may define and use recipient variables:

Yii::$app->mailer->compose('hello')
    ->setTo([
      'bob@example.com' => [
        'id': 3,
        'full_name' => 'Bob'
      ],
      'jane@example.com' => [
        'id': 4,
        'full_name' => 'Jane'
      ],
    ])
    ->setSubject('Hi %recipient.full_name%')
    ->send();

For further instructions refer to the Mailgun docs and the related section in the Yii Definitive Guide.