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経由での送信もできます。