Skip to content

boundstate/yii2-mailgun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.