CakeEmailを用いてMailgunでメール配達・未達を受け取る方法

下記は、MarkerChatのログを一部加工したものです

マーカー部分やアイコンをクリックすると当該コメントにスクロールします

MarkerChat管理者 2014-10-05 13:48:11

CakeEmailを用いてMailgunで送信する方法
① 以下URLからPluginをダウンロード
② cakephp/app/Pluginに解凍(配置)
③ cakephp/app/Config/email.phpを編集
④ cakephp/app/Config/bootstrap.phpを編集
以上、あとはCakeEmailとして、利用出来ます。

MarkerChat管理者 2014-10-05 18:21:02

URL

https://github.com/kochb/cakephp-mailgun

MarkerChat管理者 2014-10-05 18:48:11

2014-10-05 現在、ソースファイルを少し修正しないと、 正しい情報が取得出来ない。

理由は、CakeEmailで送信したメッセージIDとMailgunで実際に送信したメッセージIDが異なるからです。
その為、Mailgunで実際に送信したメッセージIDを取得する為の修正が必要になってきます。

MarkerChat管理者 2014-10-05 18:50:32

修正

cakephp/app/Plugin/Mailgun/Lib/Network/Email/BasicTransport.php

【オリジナル】
return array(
    'headers' => $this->_headersToString($email->getHeaders(), PHP_EOL),
    'body' => $response->body
);

【修正後】
return array(
    'headers' => $this->_headersToString($email->getHeaders(), PHP_EOL),
    'message' => implode(PHP_EOL, $email->message()),
    'body' => $response->body
);

MarkerChat管理者 2014-10-05 18:51:56

'message' => implode(PHP_EOL, $email->message()),

Mailgunにて送信したメール情報を取得する為、追加

MarkerChat管理者 2014-10-05 18:53:48

implode(PHP_EOL, $email->message())

array() {
      ・
  ["Message-Id"]=> string(42) "< 20130503192659.13651.20287@ドメイン>"
      ・
}

MarkerChat管理者 2014-10-05 18:55:20

20130503192659.13651.20287

Mailgunにて送信メールのメッセージID

MarkerChat管理者 2014-10-05 18:22:43

email.php

 public $mailgun = array(
  'transport' => 'Mailgun.Basic',
  'mailgun_domain' => 'ドメイン名',
  'api_key' => 'mailgunのapi-key'
 );

MarkerChat管理者 2014-10-05 18:24:24

bootstrap.php

CakePlugin::load('Mailgun');

MarkerChat管理者 2014-10-04 19:02:12

MailgunのWebhookの設定をすると、メールの配達、未達時に指定したURLを叩いてくれるので、
指定したURLにてメッセージIDと結果を取得すれば完了

MarkerChat管理者 2014-10-05 19:05:41

指定したURL

パラメーター内の以下の情報を取得

array() {
      ・
  ["Message-Id"]=> string(42) "< 20130503192659.13651.20287@ドメイン>"
      ・
  ["event"]=> string(7) "dropped"
      ・
}

MarkerChat管理者 2014-10-05 19:08:39

20130503192659.13651.20287

メッセージID

MarkerChat管理者 2014-10-05 19:10:16

drppped

メール送信結果
【deliveryed】 → 配達
【dropped】 → 未達

© markerchat.com 2013-2015