このページの本文へ

FIXER cloud.config Tech Blog

Azure Communication Servicesのメール送信機能を最速で試してみた!

2022年07月06日 10時00分更新

文● 佐藤晴輝/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 先日の記事でも触れましたが、Azure Communication Services にメール送信機能が追加されています。

 今回は、実際にリソースを作成してメールを送信できるところまで試してみます。

必要なリソースを作成する

Azure Communication Services

 既存のACSリソースです。いつも通り作ればいいかと思いきや注意点が一つあります。

 データの場所を「United States」にしてください。

 他のリージョンではメールサービスへの接続に失敗するようです。

メール通信サービス

 メールサービス用のリソースが別途必要になります。

 こちらは既存のAzure Communication Services リソースのブレードからも作成可能です。

 「リージョン」や「Data location」は選択できそうな見た目をしてますがそれぞれ「グローバル」と「United States」しか選択肢がありません。

メールドメイン

 作成したメール通信サービスの「ドメインをプロビジョニングする」ブレードを選択し、「ドメインの追加」→「Azureドメイン」とクリックしてください。

 しばらく待つと、自動でメール送信に必要なドメインが作成されます。

 「Display name」の横のeditをクリックして表示名を編集しておきましょう。

リソース間の接続

 Azure Communication Services のリソースに戻り、「ドメイン」ブレードから接続していきます。

 ここまで作ったメール通信サービスのリソースとメールドメインを選択して接続をクリックすればOKです。

 しばらく待つと、無事接続できたことが確認できます。

 Azure Communication Services のデータの場所をUS以外にしていると、このタイミングで接続に失敗してしまいます。

 その場合はAzure Communication Services のリソースのみをUSで作りなおせば大丈夫です。

メールを呼び出すプログラムを書く

 今回はVS2022を使ってC#で書いてみたいと思います。

 簡単のため、まっさらなコンソールアプリのプロジェクトを作成したものとして話を進めます。

NuGet パッケージを追加する

 NuGet パッケージ マネージャーを開き、参照のタブの検索窓に「Azure.Communication.Email」と入力し、Microsoftが出しているパッケージをインストールします。

 (今なら世界で3桁番目にこのパッケージをインストールした人類になれる…?)

コードを書く

 ややこしいことはさておき、.NET6の場合のコードを以下に示します。

 それ以外のランタイムを使いたい方は適当に読み替えてください。


using Azure;
using Azure.Communication.Email;
using Azure.Communication.Email.Models;

var connectionString = @"<ACSの接続文字列>";
EmailClient emailClient = new EmailClient(connectionString);

EmailContent emailContent = new EmailContent("ここがタイトルになります");
emailContent.PlainText = "ここが本文になります";
List<EmailAddress> emailAddresses = new List<EmailAddress> { new EmailAddress(""<送り先のメールアドレス>") { DisplayName = "Friendly Display Name" } };
EmailRecipients emailRecipients = new EmailRecipients(emailAddresses);
EmailMessage emailMessage = new EmailMessage("<設定したメールドメイン>", emailContent, emailRecipients);
SendEmailResult emailResult = emailClient.Send(emailMessage, CancellationToken.None);


Response<SendStatusResult> messageStatus = null;
messageStatus = emailClient.GetSendStatus(emailResult.MessageId);
Console.WriteLine($"MessageStatus = {messageStatus.Value.Status}");
TimeSpan duration = TimeSpan.FromMinutes(3);
long start = DateTime.Now.Ticks;
do
{
    messageStatus = emailClient.GetSendStatus(emailResult.MessageId);
    if (messageStatus.Value.Status != SendStatus.Queued)
    {
        Console.WriteLine($"MessageStatus = {messageStatus.Value.Status}");
        break;
    }
    Thread.Sleep(10000);
    Console.WriteLine($"...");

} while (DateTime.Now.Ticks - start < duration.Ticks);

 メールを投げっぱなしでよいなら13行目までで十分です。

 それ以降はコンソールに送信状態を表示しようとしています。

 実行するとコンソールの表示は以下のようになります。

 上記で実際に送信した結果をWeb版Outlookで確認すると以下のようになります。

 無事メールが送れてそうですね。

まとめ

 今回はBuild2022で発表されたばかりのメールサービスを実際に試用してみました。

 リソースのリージョンというハマりポイントはあったものの、あとはボタンポチポチとチュートリアルのコードコピペでメールを送信することができました。

 とっても簡単で便利なので、実務でも即実践投入できそうな気配があります。

 本記事が少しでも助けになれば幸いです。

FIXER Inc. 佐藤 晴輝
フロントからバック、ネットワークまである程度触れるガジェットオタクです。
好きな言語は C# で IoT と画像処理が得意です。

[転載元]
 Azure からメール送信!? Azure Communication Services のメール機能を最速で試してみた!!# Azure リレー

カテゴリートップへ