Mailgun APIを使ってメールを送る Composer版

いくつか書いているmailgunを使用したメール送信の件ですが、
たぶん正しいと思われる方法がわかったのでメモしておきます。

composerでインストール

mailgun/mailgun-php · GitHub

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関連の記事はこちら

   このエントリーをはてなブックマークに追加