SendGrid を使用した Windows Azure Mobile Services からのメール送信

皆様、あけましておめでとうございます!本年もどうぞよろしくお願いします。

年明け最初は、Mobile Services で利用可能になった email 送信機能を利用する方法をご紹介しましょう。このチュートリアルでは、サーバーサイド(Windows Azure)スクリプト(JavaScript)を追加することにより、SendGrid を使った e-mail 送信が可能になります。データベースにレコードが追加されるたびに、Moobile Services を介して、e-mail が送信されるシナリオです。

SendGrid は、クラウドベースの e-mail 送信サービスで、e-mail の確実な配信、スケーラビリティ、そしてリアルタイム分析が可能で、それを可能とするフレキシブルな API を持っているためにカスタムインテグレーションが容易になっているのです。さらに詳細を知りたい方は、 http://sendgrid.com を参照してください。

このチュートリアルでは、下記の基本ステップを通じて、e-mail 送信機能を有効にできます:

  1. 新しい SendGrid アカウントを作成する
  2. e-mail を送信する新しいスクリプトを保存する
  3. 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 アカウントへのサインアップ
  1. Windows Azure Management Portal にログインします。

  2. 管理ポータル→アドオンタブに移動し、下部のメニューから、新規をクリックします。

    image

  3. メニューからストアをクリックします。

    image

  4. サービスの選択ダイアログから、SendGrid を選択し、右矢印をクリックします。image

  5. 個人用サービス ダイアログボックス内で、SendGrid プランを選択します。

  6. SendGrid Bronze プランを2か月間タダで使いたい場合には、 プロモーションんコードのフィールドに、"freesendgridbronze" と入力してください。

  7. Windows Azureの設定のために、名前フィールドに、SendGrid サービスの名前を入力するか、またはデフォルト値の SendGrid を入力します。名前は、1 ~ 100 文字以内でアルファベットと、ダッシュ、ドット、それにアンダースコアのみでの構成が可能です。当該名前は、Windows Azure ストアのアイテムのリスト中で、ユニークな名前である必要があります。

    image

  8. 地域を指定します。ここでは West US を選択します。

  9. 右矢印をクリックします。

  10. 購入の確認 タブで、プラント価格を確認します。法律条項も確認します。同意できれば、チェックマークをクリックします。チェックマークをクリックすると、SendGrid アカウント上で購入プロセスが走ります。

    image

  11. 購入確認が終了すると、Windows Azure 上のアドオンのダッシュボードにリダイレクトされます。下記のようなメッセージが出ます。

    image

これで、SendGrid アカウントが迅速に構成され、Successfully purchased Add-On SendGrid というメッセージが表示されます。これで、アカウントと、そのクレデンシャルが生成されました。この時点で、e-mail を送信可能です。

サブスクリプションプランや、SendGrid コンタクト設定を変更するには、作成した SendGrid サービスをクリックして、SendGrid アドオンダッシュボードを開いて行います。

image

SendGrid を使って e-mail を送信するには、生成されたアカウントのクレデンシャル情報 (username および password) が必要になります。

SendGrid クレデンシャルを探す
  1. 出力値をクリックします。

    image

  2. このチュートリアルの後半で使うので、接続に使う値(ユーザー名とパスワード)をコピーし、保存しておきます。

    image

e-mail 配信を設定するために、管理 ボタンをクリックする。Sendgrid.com の Web インターフェース が出てくるので、ログインして、SendGrid コントロールパネルを扱えます。

image

Send Grid を始めるにあたりさらに詳しい情報は、 SendGrid Getting Started を参照してください。

e-mail を送信する新しいスクリプトを保存する

  1. Windows Azure Management Portal にログオンし、モバイルサービスをクリックして、対象とするサービスを選択します。

  2. 管理ポータルの中で、データ タブをクリックして、TodoItem テーブルをクリックします。

  3. todoitemの中で、スクリプト タブをクリックし、ドロップダウンリストから、挿入 を選択します。

    ここで、TodoItem テーブルにレコードが挿入された時に呼び出される関数を定義します。

  4. 挿入の関数を、下記のコードに置換します:     

     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 メソッド部分のみを追加してください。

  5. 上記スクリプトの中の幾つかの値を設定します:

    -   
    
      ***username* と *password***: 先述の手順で取得した、**SendGrid クレデンシャル**を入力します。
    
    
    
    -   
    
      ***email-address*** : このアドレスは、受信したいメールアドレスを設定してかまいません。実際のアプリでは、**テーブルにメールアドレスを多数保存しそれらのe-mail アドレスを取り出して使用**します。アプリケーションのテスト時には、**自分のメールアドレス**を設定すれば問題ないでしょう。
    
    
    
    -   
    
      ***from-address*** : メールが生成されるアドレスです。実アプリケーションでは、登録済みのドメインアドレスで、自分の所属組織化にあるものを使うべきです。もし、登録済みのドメインがない場合には、その代りに Mobile Service のドメインを利用できます。形式は、[notifications@\[モバイルサービス名\].azure-mobile.net](mailto:notifications@%5Bモバイルサービス名%5D.azure-mobile.net)です。但し当然ながら、このドメイン宛に送信されたメールは無視されます。       
    
  6. 保存ボタンをクリックします。これで、TodoItem テーブルにレコードが挿入されるたびに、e-mail が送信されるスクリプトが構成できました。

e-mail を受信するためにテストデータを Insert する

  1. Visual Studio で、Windows ストアアプリのプロジェクトに戻り、QuickStart アプリを実行します。

  2. Insert a TodoItem の下のテキストボックスに、適当な値を入力して、Save をクリックします。

  3. e-mail が送信され、下記のように通知されます。

    image

次のステップ

SendGrid についてさらに詳細を知りたい場合には、下記を参照してください。

それでは、また!

鈴木 章太郎