Customers Mail CloudのRubyライブラリでメール配信状態を取得する

Customers Mail Cloudには大きく分けて3つのAPIが用意されています。

  • メール送信
  • Webhook
  • メール配信状態取得、更新

メール送信APIはSMTPやWeb APIを通じてメール送信を行います。Webhookはメールの受信や配信結果を受け取るための仕組みです。そしてメール配信状態取得APIはバッチ処理である日付のメール配信結果を受け取れます。

Webhookで処理するのも良いですが、バッチ処理でも問題ない場合はメール配信状態取得APIを利用する方が手軽です。サーバを立てる必要もなく、ローカルコンピュータからでも取得できます。

今回、Ruby版ライブラリでメール配信状態取得APIに対応したので、その使い方を解説します。

ライブラリのインストール

ライブラリの名前は CustmersMailCloud-rb です。gemやbundleでインストールできます。

gem install customers_mail_cloud

初期化

ライブラリの初期化は次のようなコードになります。あらかじめCustomers Mail CloudでAPIユーザ、APIキーを取得しておいてください。

client = CustomersMailCloud::Client.new('API_USER', 'API_KEY')

メール配信状態オブジェクトの取得

メール配信状態は次の3つに分かれています。

メールの種類 メソッド
正常終了したメール cliend.delivery
エラーメール client.bounce
ブロック client.block

こちらの詳細についてはドキュメントを参考にしてください。

エラーメールを取得する

今回はエラーメールを取得してみます。日付も指定し、取得数(今回は100件)も取得しています。

bounce = @client.bounce
bounce.server_composition = 'sandbox'
bounce.start_date = Date.parse("2020-11-20")
bounce.limit = 100
bounce.list

結果はメールの情報が入った配列になります。メールのIDが入っていますので、システムから送信した際のIDと突合して今後はメールを送信しないようにするといった処理ができるでしょう。

[
  {
    "apiData"=>"",
    "created"=>"2020-11-14 14:09:18",
    "from"=>"from@smtps.jp",
    "messageId"=>"<8ae5b9e0-2637-11eb-b9dc-9ca3ba30b181@mta04.sandbox.smtps.jp>",
    "reason"=>"host unknown",
    "returnPath"=>"from@return.sandbox.smtps.jp",
    "status"=>"1",
    "subject"=>"Example Subject",
    "to"=>"example@example.com"
  }
]

配送状況を取得する場合は次のようになります。

delivery = @client.delivery
delivery.server_composition = 'sandbox'
delivery.date = Date.parse("2020-11-20")
delivery.limit = 100
delivery.list

まとめ

Ruby版はサーバサイドはもちろん、AWS LambdaのようなFaaS上で動かすこともできます。RubyやRuby on Railsプロジェクトでメール送信処理が必要になったら、ぜひCustomers Mail Cloudをご利用ください。SMTPで送信することも、Web API経由での送信もできます。

クラウドからのメール送信を簡単に。確実に。| Customers Mail Cloud