この所、MS Graphの話ばかりとなってしまっているが、今回もMS Graphのお話。
今回は、メール送信について。今まで、いくつかメール送信のプログラムを書いてきたが、大抵、MailKit.Net.Smtpを使用し作成していた。
MailKit.Net.Smtpを使用して、Office365経由でメールを送信する場合は、Access Tokenを取得後SaslMechanismOAuth2を作成して、認証するわけだが、結構面倒だ。
調べてみると、MS Graphだけでもメール送信ができるようなので、試してみた。
Azureアプリケーションに必要な権限は
- Mail.Send
のみ。
メッセージを作成後、いつものごとく、MS Graph Clientインスタンスを作成して、Me.SendMail.PostAsyncメソッドを呼び出すだけ。
// MS Graph Clientインスタンスの作成
var cli = new GraphServiceClient(cred);
// メッセージの作成
var mesg = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody() {
Message = new Message() {
Subject = "メール送信テスト",
Body = new ItemBody() {
ContentType = BodyType.Text,
Content = "メール送信てすとだよぅ"
},
// To
ToRecipients = new List<Recipient>() {
new Recipient() {
EmailAddress = new EmailAddress() {
Address = "boo@foo.com"
}
}
},
// Cc
CcRecipients = new List<Recipient>() {
new Recipient() {
EmailAddress = new EmailAddress() {
Address = "foo@woo.com"
}
}
},
// 添付
Attachments = new List<Attachment>() {
new FileAttachment() {
Name = "hoge.png",
ContentType = "image/png",
ContentBytes = buff
}
}
},
SaveToSentItems = true
};
// メール送信
await cli.Me.SendMail.PostAsync(mesg);