Microsoft 365/Graph & IIS

Microsoft Graph & IIS. (5) Mail.send 권한을 이용하여 메일 발송

Pepuri 2024. 3. 9. 10:43
반응형

지난 글에 이어서 이번에는 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를 연동하는 과정을 쉽게 구현할 수 있었습니다.

이번 포스팅은 이것으로 마치겠습니다.

반응형