boundstate / yii2-mailgun
Mailgun integration for the Yii framework
Installs: 116 243
Dependents: 0
Suggesters: 0
Security: 0
Stars: 28
Watchers: 8
Forks: 33
Open Issues: 1
Type:yii2-extension
Requires
- mailgun/mailgun-php: ^3
- yiisoft/yii2: >=2.0.4
Requires (Dev)
- kriswallsmith/buzz: ^1.0
- nyholm/psr7: ^1.2
- phpunit/phpunit: ^8
- vlucas/phpdotenv: ^3.6
Suggests
- kriswallsmith/buzz: Mailgun API client requires an HTTP client
- nyholm/psr7: Mailgun API client requires a PSR-7 implementation
README
This extension provides a Mailgun mail solution for Yii framework 2.0.
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.