Azure環境を構築するうえで、メール送信機能が必要になったので実現できるサービスを実際に使ってみました。
使い勝手としては、AWSで例えてしまって申し訳ないですが、Amazon SESとほぼ一緒でした。
Amazon SESを使ったことがある人なら、特に苦戦せずに使えそうなサービスです。
リソース構成
Azure Communication Servicesでメールを送信する場合、2つサービスを使用することになります。
1つがAzure Communication Servicesです。
こちらは今回メール送信に使用しますが、その他チャット送信などの通知機能も持っており、統括的な通知サービスになっています。
そのような背景もあり、主体ではあるのですが、メール送信関連のコンフィグはもう1つの方で持つことになります。
2つ目がEmail Communication Servicesです。
こちらがAzure Communication Servicesからメール送信するときに参照されるメール関連のコンフィグになります。
使用するドメインやメールアドレス、メールテンプレート等の設定を保持します。
構築手順
Email Communication Services
Email Communication Services作成
- Azure Portalで「Email Communication Services」を検索し、移動。

- 左上の「作成」を押下。

- 必要事項を入力して、「確認と作成」を押下して、確認画面で「作成」を押します。

Email Communication Services設定
- 作成が完了したら、リソースのリンクを押下して、設定画面に遷移。

- 「Settings」-「Provision domains」を押下。

- 「Add domain」でメール送信ドメインを追加する。
※「Azure domain」だと、Azureにて自動でメールドメインが払い出される。
※「Custom domain」だと自身が所有するドメインを追加することができる。

- ドメインを追加する。
「Azure domain」の場合は、押下すると即時に利用可能なレベル。
右上に進行中の表示が出て、数分後にはメールアドレスが払い出される。

払い出されるドメインは<乱数>.azurecomm.net が払い出される。注意
Email Communication Services上だとドメインは、「.azurecomm.net」ですが、
実際に届くメールアドレスは、「.jp1.azurecomm.net」で届きました。
ドメインレベルで受信許可等が必要な場合は、ご注意ください。「Custom Domain」の場合は、所有しているドメインを入力して、「Confirm」して「Add」を押下。

所有するドメインのDNSにレコード追加の指示が出るので、追加を行う。
指示されたTXTレコードを追加。

レコードを追加して数分すると「Verified」になる。

そのまま、SPFとDKIM、DKIM2も有効化するために「Configure」を押下して、指定されたDNSレコードを登録する。
※SPFはドメイン認証のためのTXTレコードと重複するので値に2行目として追加する。
以下はRoute 53で行った場合の画面イメージ。

- SPF、DKIM、DKIM2の列が全て「Verified」になれば、ECSの設定は完了。
Azure Communication Servicesリソース作成
- Azure Portalで「Communication Services」を検索し、移動。

- 左上の「作成」を押下。

- 必要事項を記入して、「Review + Create」を押下。その後の確認画面でも「Create」を押下。

- 出来上がったリソースのリンクを押下。

- 左メニューから「メール」-「ドメイン」を押下。

- 「Connect domains」を押下。

- 作成したEmail Communication Servicesとドメインを指定して、「Connect」を押下。
※以下の画面は、Azure domainを追加してみた際の画面

- 追加したドメインが「Connected」になればOK。

機能検証
試しに追加したドメインでメールを送信してみます。
- 作成したAzure Communication Servicesのリソースで「メール」-「メールを試す」を押下。

- 送信メールの情報を入力して、「Send」を押下。
(改行はHTML)

- 無事に受信完了。

注意
初期状態だと送信元メールアドレスは「DoNotReply」だけが使用できます。
送信元アドレスを追加したい場合は次の手順を実施してください。
補足(送信元メールアドレスの追加)
送信元メールアドレスは、Email Communication Servicesの方で、「Provision domains」に登録したドメインの中に設定されています。
左メニューの「Email services」-「MailFrom addresses」に登録されています。
そしてこの画面の「Add」から追加できるはずなのですが、グレーアウトされていて使用できません。
なぜか探していたら、同様の事象で困っている人がMicrosoft Igniteで問合せしていました。
https://learn.microsoft.com/en-us/answers/questions/1630281/add-button-disabled-in-email-communication-service
どうやら原因はわからないですが、Azure CLIからなら追加できたという情報です。
ということで、仕方ないのでAzure CLIから追加してみます。Azure CLIはCloudShellから実行しました。
- CloudShellを起動。

- CloudShellで対象のサブスクリプションにログイン。
az account set –subscription “
<サブスクリプション名>“ - 送信元アドレスを追加してみます。
az communication email domain sender-username create \
--domain-name "<追加先のドメイン名>" \
--email-service-name "<EmailCommunicationServicesのリソース名>" \
--sender-username "<送信元アドレス名>" \
--resource-group "<リソースグループ>" \
--display-name "<表示名>" \
--username "<送信元アドレス名>""<送信元アドレス名>"注意
「Azure domain」の場合は、「–domain-name」の引数を「AzureManagedDomain」にする必要があります。
カスタムドメインの場合は、登録したドメイン名でOKです。 - 画面に追加されました。

- 「メールを試す」画面でも、「Sender email username」に追加したユーザー名が選択肢に出てきます。

- 無事に設定したユーザー名と表示名でメールを受信しました。

まとめ
カスタムドメインやAzureのサブドメインでメール送信が簡単に行えました。
ファイルの添付等も可能なので、Azure上のサービスと連携させて、メール通知させるのに適していることがわかりました。




