メール送信を行うのは一般的にSMTPを使って行います。しかしサーバによってはメール配信プログラムをインストールしていないこともあります。そうした時に使えるのがHTTP経由、APIを使ったメール配信です。Customers Mail CloudはSMTPだけでなく、API経由でのメール配信にも対応しています。
今回はそのメール配信APIを紹介します。
APIサーバについて
APIサーバのエンドポイントURLは契約しているプランによって異なりますのでご注意ください。
プラン名 | エンドポイントURL |
---|---|
無料トライアル | https://sandbox.smtps.jp/api/v2/emails/send.json |
Standardプラン | https://te.smtps.jp/api/v2/emails/send.json |
Proプラン | https://SUBDOMAIN.smtps.jp/api/v2/emails/send.json |
SUBDOMAINは、サービス利用開始時に申請いただいたものです
APIユーザを作成する
API設定画面にて、APIユーザを作成します。アクセス権限として、SMTPとHTTP-APIの2つを有効にしてください(メール配信を行うので、SMTP権限が必要になります)。
Node.jsで試す
今回はNode.jsを使って試してみたいと思います。今回のコードはバージョン8.0以降で動きます。
ライブラリを読み込む
APIを利用する際にはHTTPアクセスをします。そこでHTTPアクセスを容易にする superagent というライブラリを読み込みます。
const request = require('superagent');
このライブラリを利用する際にはNode.jsのバージョン管理、npmを使ってあらかじめインストールしておく必要があります。コマンドは npm i superagent
で行います。
変数を設定する
そしてAPIサーバのエンドポイントURLを指定します。
const url = 'https://sandbox.smtps.jp/api/v2/emails/send.json';
次にAPIユーザの認証情報を指定します。
const api_user = 'api@smtps.jp'; const api_key = 'PASSWORD';
配信先の情報です。これは複数アドレス、まとめて指定できます。
const to = [{ name: 'John Doe', address: 'example@smtps.jp' }];
配信元の指定です。
const from = { name: 'Customer Cloud Mail Admin', address: 'info@smtps.jp' };
最後にメール配信内容です。どちらも必須の情報です。
const subject = 'テストメール'; const text = `このメールはテストメールです。 改行を入れます。 ---- フッターです `;
変数をまとめる
変数の用意ができたので、一つのパラメータとしてまとめます。
const params = { api_user, api_key, to, from, subject, text };
送信を行う
ではAPIサーバのエンドポイントURLと配信情報のパラメータを使ってメール送信を行います。メール送信APIはPOSTメソッドを使います。
(async (url, params) => { try { // 送信処理 const result = await request .post(url) .send(params); console.log(result.body); } catch (e) { // エラーの場合 console.error(e.response.body); } })(url, params);
送信が成功すると、下記のようにメールIDが返ってきます。
{ id: '<1053497219.15567.1558665761030@mta02.sandbox.smtps.jp>' }
エラーがあると、下記のようにエラー内容が返ってきます。
{ errors: [ { code: '02-001', field: 'text', message: 'text is required.' } ] }
まとめ
サーバ上の制限によってSMTPが使えない場合でもHTTP経由でメール配信が行えますので、APIをぜひ使ってみてください。今回はNode.jsを使いましたが、汎用的なHTTPアクセスを行っていますので、他のプログラミング言語でも簡単に実装できるでしょう。
さらに詳しい使い方についてはEmail Sending APIを参照してください。