1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NCMBのスクリプトでSendGridのメールを送信する

Posted at

NCMBに用意されているスクリプトは、サーバーサイドで実行するコードをクラウド上で実行できる機能です。Node.jsとRubyのコードをクラウド上で実行し、結果を取得できます。

主にガチャのようなクライアントに記述したくないコードを実行したり、APIキーを使ったアクセスなどで活用できます。今回はメール送信サービスのSendGridを使って、スクリプトでメール送信を実装します。

必要なライブラリ

ネットワークアクセスを行う superagent をインポートします。

const request = require('superagent');

URL、定数の定義

SendGridのAPIへリクエストするための変数を定義します。

  • APIエンドポイントURL
  • APIキー
// SendGrid用の設定
const SENDGRID_URL = 'https://api.sendgrid.com/v3/mail/send';
const API_KEY = 'YOUR_API_KEY';

リクエストに伴う処理

NCMBのスクリプトは、リクエストごとに以下の関数を実行します。

module.exports = async (req, res) => {
  // この中に処理を書きます
}

HTTPヘッダーを作成

トークンを使ってHTTPヘッダーを作成します。

// ヘッダー
const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json',
}

リクエストボディを作成

今回はリクエストされた email パラメーター宛にリクエストボディを作成します。また、 ccbcc パラメーターで追加のメールアドレスを指定できます。

// リクエストボディから、SendGridのリクエストを作成
const { body } = req;
const data = {
  'personalizations': [
    {
      'to': [
        {
          'email': body.email
        }
      ],
      'subject': 'テストメール from SendGrid',
    }
  ],
  'from': {
    'email': 'info@devrel.dev'
  },
  'content': [
    {
      'type': 'text/plain',
      'value': 'これはテストメールです'
    }
  ]
};
if (body.cc) data.personalizations[0].cc = [{'email': body.cc}];
if (body.bcc) data.personalizations[0].bcc = [{'email': body.bcc}];

メール送信リクエストを行う

できあがったデータをSendGridのメール送信APIを呼び出します。レスポンスが202であればメール送信成功です。

try {
  // SendGridへのリクエスト実行
  const response = await request
    .post(SENDGRID_URL)
    .set(headers)
    .send(data);
  // レスポンスステータスで処理判別
  if (response.statusCode === 202) {
    res.send({});
  } else {
    res.send({error: `Send mail error: ${response.statusCode}`})
  }
} catch (e) {
  // 4xx / 5xx系の場合はこちら
  res.send(e.response.body);
}

スクリプトからの呼び出し

スクリプトでは以下のように呼び出します。

await ncmb.Script
  .exec('POST', 'sendmail.js') // スクリプト名は自分で決められます
  .data({
    email: 'info@example.com'
  })

まとめ

SendGridはAPIキーを使って簡単にメール送信ができます。アプリからメール送信したり、お問い合わせなどに利用できるでしょう。

アプリにはプッシュ通知もありますが、メールもよく利用されます。メールが必要な際に、SendGridを利用してみてください。

スクリプト (JavaScript & Monaca) : 基本的な使い方 | ニフクラ mobile backend

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?