株式会社ネクストスケープ、ソリューションビジネス部に所属している小野塚です。
今回、Azure Communication Serviceでのメール送信機能がプレビューされているということを聞き、試してみました。
今まで仕事の中で幾つかのメール配信サービスを使ってきました。1つはExchange Online、もう1つはSendGridです。
Exchange Onlineは1分30件以上の送信制限等があり、あまり大量のメール配信には適していません。
また、相手にメールが届いたかどうかであったり、開封確認といったものができません。APIはそれなりに用意されているので制御対象であるExchange Onlineのアカウントに対して受信メールのチェック等色々できますが、先に挙げた通り、当社のお客様のシステムでは大量配信を必要とする場合が多く、送信制限等を考えると悩ましいです。
そしてSendGrid、こちらを使っている方は非常に多いと思います。ただ、おもむろに仕様が変わったり、契約先によってはサポート対応に物足りなさを感じていました。
そろそろ新しいメール配信サービスが出てきてもいいんじゃないかしらと思いつつ、2,3年経ちまして今回の情報を知り、試してみた、というのが今回のきっかけです。
これはまだプレビューではありますが、Azureを利用しているユーザーにとってはメール配信サービスの主流になるかもしれない可能性を秘めているので早めにキャッチアップしてみたいと思います。
まずはAzureポータルで「リソースの作成」から「Communication Services」を選んでください。実はEメール配信は別のサービスになるのですが、このCommunication Servicesも作成する必要があります。
いつもの通り、必要なパラメータを入力し、無事に作成が終わりました。
次に必要になるのが、「Email Communication Services」 (メール通信サービス)です。本来は「Email Communication Services」なのですが、Azureポータルの言語を日本語にしている場合「メール通信サービス」でなければ検索でヒットしません。
(こういったこともあるので本当は英語がいいのですよね。。)
Data locationはプレビューのためか、「United States」しか選べません。
さて、一通り作成できたら送信用のメールドメインを設定する必要があります。既にあればそれを利用し、もし無ければ以下の画面で「無料のAzureサブドメインを追加する」を選び、無料で作成することができます。
作成したメールドメインは認証の必要がありますが、これも「Email Communication Services」の「ドメインをプロビジョニングする」で行えます。
そして、最初に作ったCommunication Servicesに戻り、「ドメイン」をクリックすると以下の画面になりますので、ここで先ほど作成・認証したメールドメインを接続します。
そのために必要な情報を入力して「接続」ボタンを押すと何故か「リソースの更新中にエラーが発生しました」の文字が。。
色々と作成した直後からではないかと思い、現実逃避も含め3,4時間経って試したものの、やはりエラー。
ここでふと気づいたのですが、Communication Servicesがリージョンが日本も選べたので何気なく日本に設定したのですが、Mail Communication Servicesはリージョンがアメリカのみとなっています。
もしかすると。。ということでCommunication Servicesのリージョンをアメリカで作り直したところ、無事正常に接続が完了しました。
まあ、同じリージョンでないとうまくいかないというのはAzureではあるあるなのですが、まさかここでも同じ問題にぶつかるとは。。
ということで、Communication ServicesとMail Communication Servicesは(今のところ)同じリージョンに置く必要があるようなのでご注意ください。ちょっと詰まった部分がありましたが、ここまでは基本的にAzureポータルで指示に従っていけばそれぞれボタン1つで完了してしまい、非常に簡単に終わりました。
では、改めてMicrosoftのドキュメントにあるサンプルプログラムでメール送信を試してみましょう。
JSのサンプルプログラムが用意されており、node.jsをインストールすればコマンドプロンプトで簡単に確認ができます。
結果は以下になります。
実行完了後に指定したメールアドレスに配信されるまでちょっと時間がかかりました(5分程度?)が、これもプレビューのためかと思われます。サンプルプログラムでは送信した後に状態を取得し、表示するのですが(上のスクショの括弧内)、状態の種類は以下になります。
- Queued:キューに登録済み。電子メールは配信のためにキューに入れられています
- OutForDelivery:メールは現在、受信者に送信されています
- Dropped:電子メール メッセージは、配信が正常に完了する前に削除されました
ここまで調べてきて私が勘違いしていたことに気付いたのですが、現在Email Communication Servicesでは送信するところまでしか確認ができません。
つまり、SendGridのようにちゃんと相手に届いたか、開封されたかまでは確認できないようです。
APIのリファレンスも見てみたのですが、やはり上で挙げた内容と同じでした。
まだ公開されたばかりですので今後色々とできることが増えていくことを期待しています。せっかくなのでこのサービスについては引き続きウォッチしていき、何かあれば試していきたいと思います。
(06/15追記)
あらためてメールドメインを確認したところ、以下の赤枠部分、「User interaction tracking」という項目に気付きました。
「turn off」の箇所をクリックすると以下のような画面となり、「ユーザーエンゲージメントのトラッキングを有効にすることで、エンドユーザーメールの開封/クリックトラッキングを有効にしていることを認識することができます。」(日本語訳)とあります。
ということはやはりSendGridのように送信後の状況をトレースすることができそうなのですが、改めて調べてみてもこの項目に関する情報が見当たりませんでした。
また、試しにこの設定をONに変更してもう一度送信を行った後、Azureポータルを色々眺めてみましたが、それらしき情報が見当たらず。。
ただ、トレースできる可能性があることがわかっただけでも更に期待が出来るかなと。
今後、もしわかったことがあればこのブログで紹介していきたいと思います。