FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Customers Mail Cloudを使ってスクリプトでメール送信を実現する

f:id:mbaasdevrel:20191217100932p:plain

※ 筆者はCustomers Mail CloudのDevRel(開発者向けマーケティング)をサポートしています

Customers Mail Cloudはメール送信サービスを提供しています。SMTPまたはWeb APIによるメール送信が可能で、送信自体の実装は難しくありません。今回はNode.jsを使ってNCMBのスクリプト機能からメール送信を行ってみます。

コードに関する解説

Customers Mail CloudでドメインおよびAPIユーザの設定を行うと、次の3つの情報が入手できます。

  • APIユーザ名
  • APIキー
  • APIエンドポイントURL

APIエンドポイントURLは契約によって異なります。

実装の流れ

まずはメール送信に関する変数を設定します。メールの送信元は固定値で設定して問題ないでしょう。

const url = 'https://sandbox.smtps.jp/api/v2/emails/send.json';
const api_user = 'api@ncmb.jp';
const api_key  = 'PASSWORD';

const from = {
  name: 'Customer Cloud Mail Admin',
  address: 'info@ncmb.jp'
};

Web APIを呼び出すライブラリはスクリプト機能で標準として用意されているSuperagentを使います。

const request = require('superagent');

そしてスクリプトで呼び出される下記メソッド内に実装していきます。

module.exports = async (req, res) => {
  // この中に実装していきます
}

送信先はPOSTメソッドのパラメータ(ボディ)で指定できるようにします。

const to = [{
  name: req.body.name,
  address: req.body.to
}];

件名、本文は変数化してもいいですが、今回は固定値にしています。

const subject = 'テストメール';
const text = `このメールはテストメールです。
改行を入れます。

----
フッターです
`;

そしてパラメータをまとめます。

const params = { api_user, api_key, to, from, subject, text };

後はHTTP POSTリクエストするだけです。

try {
  // 送信処理
  const result = await request
    .post(url)
    .set('Content-Type', 'application/json')
    .send(params);
  res.send(result.body);
} catch (e) {
  // エラーの場合
  console.error(JSON.stringify(e));
}

これで問題なければ、次のようなレスポンスが返ってきます。

{
  "id":"\u003C1867844705.17288.1575893073288@mta01.sandbox.smtps.jp\u003E"
}

まとめ

const url = 'https://sandbox.smtps.jp/api/v2/emails/send.json';
const api_user = 'api@ncmb.jp';
const api_key  = 'PASSWORD';

const from = {
  name: 'Customer Cloud Mail Admin',
  address: 'info@ncmb.jp'
};

const request = require('superagent');

module.exports = async (req, res) => {
  // この中に実装していきます
  const to = [{
    name: req.body.name,
    address: req.body.to
  }];

  const subject = 'テストメール';
  const text = `このメールはテストメールです。
改行を入れます。

----
フッターです
`;

  const params = { api_user, api_key, to, from, subject, text };

  try {
    // 送信処理
    const result = await request
      .post(url)
      .set('Content-Type', 'application/json')
      .send(params);
    res.send(result.body);
  } catch (e) {
    // エラーの場合
    console.error(JSON.stringify(e));
  }
}

スマートフォンアプリであってもメール送信したいというニーズはよく出てきます。Customers Mail Cloudは実装も簡単なので、お勧めです。ぜひ試してみてください。

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

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。