Customers Mail Cloud用のPHPライブラリで送信メールの統計情報を取得する – Customers Mail Cloud ブログ


PHPでメール送信を行う際にはPHPMailerやmb_send_mailを使うのが基本だと思いますが、環境によってはSMTPが使えない場合もあります。そうした時にはWeb API経由でのメール送信が便利です。

Customers Mail Cloudにはメール送信用のAPIが用意されていますが、さらに手軽に使いやすくするライブラリを開発しています。今回は、送信したメールに関する統計情報をPHP SDKで取得する方法を紹介します。

customers-mail-cloud/php-sdk – Packagist

インストール

インストールは composer コマンドで行います。

composer require customers-mail-cloud/php-sdk

使い方

まずライブラリをインポートします。

require_once 'vendor/autoload.php';

use CustomersMailCloud\CustomersMailCloud;

次に初期化します。 Node.jsでメールを送信する – Email Sending API – Customers Mail Cloud ブログ ブログを参考にAPIユーザ、APIキーを作成してください。

$api_user="API_USER";
$api_key  = 'API_KEY';
// Initialize client
$client = new CustomersMailCloud($api_user, $api_key);

統計情報を取得する

統計情報は statistics メソッドで取得できます。 yearmonth は必須です。

$statistics = $client->statistics([
    'year' => 2024,
    'month' => 1,
    'server_composition' => 'your-server-composition'
]);

その月の合算だけを取得したい場合は、 total パラメーターを true にします。

// Get total statistics for a month
$totalStats = $client->statistics([
    'year' => 2024,
    'month' => 1,
    'server_composition' => 'your-server-composition',
    'total' => true
]);

検索に利用できるパラメーター

検索条件はStatistics – Manual – Customers Mail Cloudにありますが、以下のパラメータが利用できます。

パラメータ 必須 データ型 説明
server_composition No UTF-8 操作の対象となるサーバ構成の名称を指定します。
year Yes INTEGER 統計情報を取得する年(yyyy形式)を指定します。
month Yes INTEGER 統計情報を取得する月(mm形式)を指定します。
total No BOOLEAN true を指定した場合、year, month で指定した年月のサマリーデータを1レコードで応答します。レスポンスメッセージの date パラメータには、文字列 “total” を出力します。

レスポンス

結果は、 Statistic クラスのインスタンスの配列です。

foreach ($statistics as $stat) {
    echo "Date: " . $stat->date . "\n";
    echo "Queued: " . $stat->queued . "\n";
    echo "Succeeded: " . $stat->succeeded . "\n";
    echo "Failed: " . $stat->failed . "\n";
    echo "Blocked: " . $stat->blocked . "\n";
    echo "Valid: " . $stat->valid . "\n";
}

エラーの場合

たとえば未来の日付にすると、検索エラーになります。

try {
  $emails = $client->statistics([
      'server_composition' => 'sandbox',
      'year' => date('Y') + 1,
      'month' => 1
  ]);
} catch (CustomersMailCloudError $e) {
  echo "Error Message: " . $e->getMessage() . "\n";
  echo "Error Codes: " . implode(', ', $e->getAllErrorCodes()) . "\n";
}

エラーの原因について

エラーメールになった原因は status プロパティの数字(コード)で判断できます。一覧でまとめると以下の通りです。

フィールド エラーコード メッセージ (en) メッセージ (ja)
server_composition 10-002 Specified server composition, {0}, was not found. 指定されたサーバ構成 {0} は存在しません。
status 13-001 The specified {0} status is not defined. 指定されたステータス {0} は定義されていません。
year 13-002 Future date cannot be specified. 将来の日付は指定できません。
month 13-002 Future date cannot be specified. 将来の日付は指定できません。

コードについて

コードは goofmint/CustomersMailCloud-php: PHP SDK for Customers Mail Cloudで公開しています。不具合などがあれば、ご指摘ください。なお、現状のSDKは非公式になるので、公式サポートへの問い合わせはご遠慮ください。

まとめ

PHPからメール送信を行う際に、ライブラリを使うことでとても簡単に実装ができます。ぜひお試しください。




Source link

関連記事

コメント

この記事へのコメントはありません。