SendGrid を使用した Windows Azure Mobile Services からのメール送信
皆様、あけましておめでとうございます!本年もどうぞよろしくお願いします。
年明け最初は、Mobile Services で利用可能になった email 送信機能を利用する方法をご紹介しましょう。このチュートリアルでは、サーバーサイド(Windows Azure)スクリプト(JavaScript)を追加することにより、SendGrid を使った e-mail 送信が可能になります。データベースにレコードが追加されるたびに、Moobile Services を介して、e-mail が送信されるシナリオです。
SendGrid は、クラウドベースの e-mail 送信サービスで、e-mail の確実な配信、スケーラビリティ、そしてリアルタイム分析が可能で、それを可能とするフレキシブルな API を持っているためにカスタムインテグレーションが容易になっているのです。さらに詳細を知りたい方は、 https://sendgrid.com を参照してください。
このチュートリアルでは、下記の基本ステップを通じて、e-mail 送信機能を有効にできます:
- 新しい SendGrid アカウントを作成する
- e-mail を送信する新しいスクリプトを保存する
- e-mail を受信するためにテストデータを Insert する
このチュートリアルは、Mobile Services のQuick スタート相当を終了したOR理解したことを前提にしています。もしまだの場合には Get started with Mobile Services を実施してください。
新しい SendGrid アカウントを作成する
Windows Azure のユーザーは、SendGrid の Bronze Plan を2か月間タダで使うことができるプロモーションコードを持っています。それが freesendgridbronze です。 これを入力すれば、ひと月にフリーの e-mail を 40,000 通、送信できます。またすべての Bronze プランの特長を、最初の2か月間は利用することができます。これに関して、更に詳しい情報を知りたい場合には、SendGrid Features ページを参照してください。
SendGrid アカウントへのサインアップ
Windows Azure Management Portal にログインします。
管理ポータル→アドオンタブに移動し、下部のメニューから、新規をクリックします。
メニューからストアをクリックします。
個人用サービス ダイアログボックス内で、SendGrid プランを選択します。
SendGrid Bronze プランを2か月間タダで使いたい場合には、 プロモーションんコードのフィールドに、"freesendgridbronze" と入力してください。
Windows Azureの設定のために、名前フィールドに、SendGrid サービスの名前を入力するか、またはデフォルト値の SendGrid を入力します。名前は、1 ~ 100 文字以内でアルファベットと、ダッシュ、ドット、それにアンダースコアのみでの構成が可能です。当該名前は、Windows Azure ストアのアイテムのリスト中で、ユニークな名前である必要があります。
地域を指定します。ここでは West US を選択します。
右矢印をクリックします。
購入の確認 タブで、プラント価格を確認します。法律条項も確認します。同意できれば、チェックマークをクリックします。チェックマークをクリックすると、SendGrid アカウント上で購入プロセスが走ります。
購入確認が終了すると、Windows Azure 上のアドオンのダッシュボードにリダイレクトされます。下記のようなメッセージが出ます。
これで、SendGrid アカウントが迅速に構成され、Successfully purchased Add-On SendGrid というメッセージが表示されます。これで、アカウントと、そのクレデンシャルが生成されました。この時点で、e-mail を送信可能です。
サブスクリプションプランや、SendGrid コンタクト設定を変更するには、作成した SendGrid サービスをクリックして、SendGrid アドオンダッシュボードを開いて行います。
SendGrid を使って e-mail を送信するには、生成されたアカウントのクレデンシャル情報 (username および password) が必要になります。
SendGrid クレデンシャルを探す
e-mail 配信を設定するために、管理 ボタンをクリックする。Sendgrid.com の Web インターフェース が出てくるので、ログインして、SendGrid コントロールパネルを扱えます。
Send Grid を始めるにあたりさらに詳しい情報は、 SendGrid Getting Started を参照してください。
e-mail を送信する新しいスクリプトを保存する
Windows Azure Management Portal にログオンし、モバイルサービスをクリックして、対象とするサービスを選択します。
管理ポータルの中で、データ タブをクリックして、TodoItem テーブルをクリックします。
todoitemの中で、スクリプト タブをクリックし、ドロップダウンリストから、挿入 を選択します。
ここで、TodoItem テーブルにレコードが挿入された時に呼び出される関数を定義します。
挿入の関数を、下記のコードに置換します:
var SendGrid = require('sendgrid').SendGrid; function insert(item, user, request) { request.execute({ success: function() { // After the record has been inserted, send the response immediately to the client request.respond(); // Send the email in the background sendEmail(item); } }); function sendEmail(item) { var sendgrid = new SendGrid('**username**', '**password**'); sendgrid.send({ to: '**email-address**', from: '**from-address**', subject: 'New to-do item', text: 'A new to-do was added: ' + item.text }, function(success, message) { // If the email failed to send, log it as an error so we can investigate if (!success) { console.error(message); } }); } }
※ Push 通知のコードを既に入力している場合には、そのスクリプトと同居は可能です。SendGrid の定義部分と、Sendmail メソッド部分のみを追加してください。
上記スクリプトの中の幾つかの値を設定します:
- ***username* と *password***: 先述の手順で取得した、**SendGrid クレデンシャル**を入力します。 - ***email-address*** : このアドレスは、受信したいメールアドレスを設定してかまいません。実際のアプリでは、**テーブルにメールアドレスを多数保存しそれらのe-mail アドレスを取り出して使用**します。アプリケーションのテスト時には、**自分のメールアドレス**を設定すれば問題ないでしょう。 - ***from-address*** : メールが生成されるアドレスです。実アプリケーションでは、登録済みのドメインアドレスで、自分の所属組織化にあるものを使うべきです。もし、登録済みのドメインがない場合には、その代りに Mobile Service のドメインを利用できます。形式は、[notifications@\[モバイルサービス名\].azure-mobile.net](mailto:notifications@%5Bモバイルサービス名%5D.azure-mobile.net)です。但し当然ながら、このドメイン宛に送信されたメールは無視されます。
保存ボタンをクリックします。これで、TodoItem テーブルにレコードが挿入されるたびに、e-mail が送信されるスクリプトが構成できました。
e-mail を受信するためにテストデータを Insert する
Visual Studio で、Windows ストアアプリのプロジェクトに戻り、QuickStart アプリを実行します。
Insert a TodoItem の下のテキストボックスに、適当な値を入力して、Save をクリックします。
e-mail が送信され、下記のように通知されます。
次のステップ
SendGrid についてさらに詳細を知りたい場合には、下記を参照してください。
- SendGrid API documentation: https://docs.sendgrid.com/documentation/api/
- SendGrid special offer for Windows Azure customers: https://sendgrid.com/azure.html
それでは、また!
鈴木 章太郎
Comments
- Anonymous
July 16, 2013
私は個人でソフトウェアを開発しているものです。 まだまだ、クラウド上での開発情報が不足している状況で、このような有益なブログは感謝しています。 今後も、いろいろな情報を期待しています。 有難う御座いました。