Microsoft Graph & IIS. (5) Mail.send 권한을 이용하여 메일 발송
지난 글에 이어서 이번에는 Graph API의 mail.send 권한을 이용하여 메일을 작성하고 발송하는 동작을 구현해 보겠습니다.
지난 포스팅
2024.03.01 - [Microsoft 365/Graph & IIS] - Microsoft Graph & IIS. (4) Mail.read 권한을 이용하여 Mailbox 표시
이제 진행하는 패턴은 어느정도 정해진 것 같습니다. 순서는 다음과 같습니다.
Step1: Mail.send 권한추가
Step2: 메일 발송을 위한 View Model 생성
Step3: 메일 발송을 위한 View 생성
Step4: 메일 발송 Action Method 추가
Korean
English
Step1: Mail.send 권한 추가
Appsettings.json
Mail.send 권한 추가
Step2: 메일 발송을 위한 View Model 생성
메일을 보내기 위한 데이터를 담을 EmailSendViewModel을 만듭니다.
이 모델에는 수신자 주소, 메일 제목, 메일 본문 등이 포함됩니다.
EmailSendViewModel 클래스 생성
다음과 같이 코드 수정
public class EmailSendViewModel
{
public string To { get; set; } = string.Empty;
public string Subject { get; set; } = string.Empty;
public string Body { get; set; } = string.Empty;
}
Step3: 메일 발송을 위한 뷰 생성
메일을 작성하고 보낼 수 있는 뷰(SendEmail.cshtml)를 Views/Home 디렉토리에 생성합니다.
이 뷰는 EmailSendViewModel을 모델로 사용합니다.
SendEmail.cshtml 생성
아래의 내용으로 변경
@model Identity.Models.EmailSendViewModel
<h2>Send Email</h2>
<form asp-action="SendEmail">
<div class="form-group">
<label>To</label>
<input asp-for="To" class="form-control" />
</div>
<div class="form-group">
<label>Subject</label>
<input asp-for="Subject" class="form-control" />
</div>
<div class="form-group">
<label>Body</label>
<textarea asp-for="Body" class="form-control"></textarea>
</div>
<button type="submit" class="btn btn-primary">Send</button>
</form>
Step4: 메일 발송 Action Method 추가
HomeController에 메일을 보내는 액션 메서드 SendEmail을 추가합니다.
이 메서드는 EmailSendViewModel을 인자로 받아, Microsoft Graph API를 사용하여 메일을 발송합니다.
HomeController.cs 수정
아래의 내용 추가
// GET action method to display the email sending form
[HttpGet]
public IActionResult SendEmail()
{
return View(new EmailSendViewModel()); // Pass an empty model to the view
}
// Sendemail
[HttpPost]
[AuthorizeForScopes(ScopeKeySection = "MicrosoftGraph:Scopes")]
public async Task<IActionResult> SendEmail(EmailSendViewModel model)
{
var message = new Message
{
Subject = model.Subject,
Body = new ItemBody
{
ContentType = BodyType.Text,
Content = model.Body
},
ToRecipients = new List<Recipient>()
{
new Recipient
{
EmailAddress = new EmailAddress
{
Address = model.To
}
}
}
};
await _graphServiceClient.Me.SendMail(message, null).Request().PostAsync();
return RedirectToAction("Index");
}
디버깅 진행 -> 로그인 -> 권한 추가
Home/sendemail URL로 이동
테스트 메일 발송
테스트 메일 수신 확인
코드를 이제는 ChatGPT가 쉽게 만들어주기 때문에 Graph API를 연동하는 과정을 쉽게 구현할 수 있었습니다.
이번 포스팅은 이것으로 마치겠습니다.