Node.jsでメールを送信する - Email Sending API

メール送信を行うのは一般的に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権限が必要になります)。

f:id:moongift:20190524133446p:plain
API設定画面

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を参照してください。