Mailgun APIを使ってメールを送る Composer版
いくつか書いているmailgunを使用したメール送信の件ですが、
たぶん正しいと思われる方法がわかったのでメモしておきます。
composerでインストール
composerを使用して、ライブラリをインストールします。
Composerのインストールは以下などを参照に。
PHPのパッケージ管理Composerを使う
Windowsの場合は以下に書きました。
Windows7でComposerのインストール
composer.json
に以下のように記述。
{
"require": {
"mailgun/mailgun-php": "~1.7.1"
}
}
で、インストール。
$ composer install
これでライブラリなどがダウンロードされ、mailgunの依存関係が出来上がります。
Mailgun
インストール
アドオンのインストール。
$ heroku addons:add mailgun
セットアップ
PHPの冒頭で初期化して送信。
初期化するためにはAPIキーとドメインが必要。
これは環境変数に入っている。
MAILGUN_API_KEY: key-xxx
MAILGUN_SMTP_LOGIN: postmaster@xxx.mailgun.org
MAILGUN_SMTP_PASSWORD: xxx
MAILGUN_SMTP_PORT: 587
MAILGUN_SMTP_SERVER: smtp.mailgun.org
ドメインは、MAILGUN_SMTP_LOGIN
の@
より後ろ、になるので、それを使用する。
require 'vendor/autoload.php';
use Mailgun\Mailgun;
$mgClient = new Mailgun(getenv('MAILGUN_API_KEY'));
$domain = getenv('MAILGUN_SMTP_LOGIN');
$domain = substr($domain, strpos($domain, '@') + 1);
送信
通常の送信は以下。
$result = $mgClient->sendMessage($domain, array(
'from' => 'Excited User <me@samples.mailgun.org>',
'to' => 'Baz <baz@example.com>',
'subject' => 'Hello',
'text' => 'Testing some Mailgun awesomness!'
));
パラメータを個別に設定
上記では送信時に一括で指定しているけれど、これを個別に設定するには、
Message Builder
というものを使用します。
Usage – Message Builder
上記のセットをバラすと以下のようになります。
$msgBldr = $mgClient->MessageBuilder();
$msgBldr->setFromAddress('Excited User <me@samples.mailgun.org>');
$msgBldr->addToRecipient('Baz <baz@example.com>');
$msgBldr->setSubject('Hello');
$msgBldr->setTextBody('Testing some Mailgun awesomness!');
$result = $mgClient->post("{$domain}/messages", $msgBldr->getMessage(), $msgBldr->getFiles());
キューにまとめて登録
また、キューにまとめて登録する場合は、Batch Message
を使用します。
Usage – Batch Message
これを使用して、toを複数登録すると、それぞれのtoにバラバラに同じメールが送られます。
$msgBldr = $mgClient->BatchMessage($domain);
$msgBldr->addToRecipient('test1 <test1@example.com>');
$msgBldr->addToRecipient('test2 <test2@example.com>');
// 他のパラメータ設定は同じ
$result = $msgBldr->finalize();
finalize
で、キューに登録されるようでした。
今までのmailgun関連の記事はこちら