ニフティクラウドmobile backendを使ってスマホアプリからメールを送信する方法
- 2016年3月25日
- by SendGrid
- Category: 技術ネタ
2016年3月1日、ニフティクラウドmobile backendにスクリプト機能(※)がリリースされました。この機能を利用すると、サーバサイドでNode.jsベースの実行環境を利用できるようになります。今回は、この機能を利用してスマホアプリからメールを送信する方法をご紹介します。
※2016年3月時点ではお試し版。4月1日から正式版をリリース予定。
はじめに
mobile backendは、いわゆるmBaaS(mobile Backend as a Service)です。Webアプリやスマホアプリの開発において、(特にサーバ側で)必要となる次のような機能を提供しています。
- プッシュ通知
- 会員管理・認証
- SNS連携
- データストア
- ファイルストア
- 位置情報検索
- スクリプト
また、次のプラットフォームをサポートしています。
- Android
- iOS
- JavaScript
- Monaca
- Unity
例えば、AndroidやiPhone上のスマホアプリで発生したイベントをトリガとしてメールを送信する場合、技術的にはスマホアプリからSendGridのAPIを直接コールして送信することもできますが、認証情報をアプリ内に埋め込むことはセキュリティ的にNGです。こういったケースでは、サーバサイドの実装が必要になります。今回新たにリリースされたスクリプト機能を利用することで、サーバサイドにメール送信機能を実装し、スマホアプリからmobile backendのSDKを通じて呼び出します。こうすることで、安全にコードを実行できます。
準備
今回はAndroid版サンプルアプリにメール送信機能を追加します。事前に次のものが必要になります。
- SendGridのアカウント
- mobile backendのアカウント
- mobile backend上で新しいアプリの作成とAndroid版サンプルアプリの作成
Android版サンプルアプリは、「SDKの初期化」まで行っておきます。そして、ボタンを1つ用意してボタンのクリックイベントハンドラ内に処理を実装(後述)していきます。
スクリプトの実装
まず、mobile backend上で実行されるスクリプトの実装から始めます。テキストエディタで次のようなsendmail.jsファイルを作成します。次の箇所は環境に合わせて編集してください。
- YOUR_API_KEY:SendGridのAPI Key(Mail SendへのFULL ACCESSパーミッションが必要)
- RECIPIENT_ADDRESS:宛先アドレス。今回はクライアントサイドのイベントを管理者向けに通知する想定です。
- FROM_ADDRESS:送信元アドレス
module.exports = function(req, res) { var apiKey = 'YOUR_API_KEY'; var to = 'RECIPIENT_ADDRESS'; var from = 'FROM_ADDRESS'; var data = 'to=' + to + '&from=' + from + '&subject=' + req.body.username + 'より伝言&text=ウサギさん、アヒルさんは後方をお願いします。カバさんと我々あんこうチームは、引き続きフラッグ車を攻撃します。&html=<html><body>ウサギさん、アヒルさんは後方をお願いします。カバさんと我々あんこうチームは、引き続きフラッグ車を攻撃します。</body></html>'; var request = require('superagent'); request .post('https://api.sendgrid.com/api/mail.send.json') .set('Authorization', 'Bearer ' + apiKey) .send(data) .end(function(err, response) { res.status(response.status).json(response.body); } ); }
スクリプトのアップロード
次に、先ほど実装したスクリプトをmobile backend上にアップロードします。管理コンソールにログインしてアップロード先のアプリを選択した後、スクリプトメニューを選択して「アップロード」ボタンを選択します。
アップロード画面上にファイルをドラッグして、メソッドとファイルの状態、パーミッションを設定後、「アップロードする」ボタンを選択してアップロードを行います。アップロード完了後は、ダッシュボード上でスクリプトを実行して動作確認することをお勧めします。
mobile backendのAPIキー確認
mobile backendのAPIキーはアプリ設定から確認できます。ここで確認したAPIキーはAndroidアプリでSDKの初期化に使用します。
Androidアプリの実装
次に、Androidアプリにスクリプトの呼び出し実装を追加していきます。ボタン(下の例ではhoge)のonClickイベントハンドラ内で、スクリプト名に”sendmail.js”、メソッドタイプにPOST、bodyにパラメータを指定してスクリプトを呼び出します。
hoge.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // NCMB Script NCMBScript script = new NCMBScript("sendmail.js", NCMBScript.MethodType.POST); Map<String, String> params = new HashMap<String, String>(); params.put("username", "みぽりん"); JSONObject body = new JSONObject(params); script.executeInBackground(null, body, null, new ExecuteScriptCallback() { @Override public void done(byte[] result, NCMBException e) { try { if (e != null) { Log.e("SendGridExample", e.getMessage(), e); return; } if (result != null) { Log.i("SendGridExample", new String(result, "UTF-8")); } } catch (UnsupportedEncodingException ue) { Log.e("SendGridExample", ue.getMessage(), ue); } } }); } });
動作確認
Androidサンプルアプリを実行してスクリプト呼び出し処理を実装したボタンをクリックすると、mobile backendのスクリプト経由で宛先にメールが送信されます。
さいごに
mobile backendのようなmBaaSを活用することでスマホアプリを組み込んだシステムに必要な基本機能の実装を大幅に省略することができます。また、今回追加されたスクリプト機能はmobile backendを拡張する非常に強力な機能です。ぜひお試しください!