머리말
현재 .NET Core는 SMTP 프로토콜을 지원하지 않는다는 것을 알고 있습니다. 이메일의 발신 기능을 사용할 때는 목적을 달성하기 위해 일부 서드파티 컴포넌트를 사용해야 합니다. 오늘은 두 가지 오픈 소스 이메일 전송 컴포넌트, MailKit과 FluentEmail을 각각 소개하겠습니다.
메일킷
ASP.NET Core에서는 MailKit을 사용해 메시지를 보낼 수 있으며, 크로스 플랫폼, IMAP, POP3, SMTP 등 다양한 프로토콜을 지원합니다.
다음 방법으로 설치할 수 있습니다:
이메일 보내는 간단한 예시를 소개합니다:
보내고자 하는 본문 내용이 HTML이라면 다음 도구를 사용할 수 있습니다:
Fluent Email도 오픈 소스 프로젝트로, Razor 템플릿을 사용해 이메일을 보낼 수 있고, Mailgun 같은 서드파티 이메일 발신기와도 연동할 수 있지만, 이 패키지는 .NET 4.6 하에서만 SMTP를 지원합니다. 다음 명령어를 사용해 설치할 수 있습니다:
이메일을 보내는 방법은 매우 간단합니다:
또는 Razor 템플릿을 사용해 다음을 보낼 수도 있습니다:
Email.DefaultRenderer는 FulentEmail에 어떤 렌더러를 사용할지 알려주고(직접 구현할 수도 있습니다), Razor 문법의 템플릿 문자열 내용이 포함된 템플릿 템플릿을 제공한 뒤, UsingTemplate을 사용해 렌더를 렌더링합니다.
디스크 위의 CSHTML 템플릿
Razor 템플릿 파일이 크고 문자열을 사용하기 어렵다면, 템플릿 파일을 디스크에 저장하고 다음과 같이 불러올 수 있습니다:
Mailgun으로 메시지 전송하기
Mailgun에 대해 잘 모르는 분들도 있을 수 있지만, Mailgun은 해외 우편 서비스 회사로, 유명한 깃허브 이메일 서비스가 호스팅되어 있고, 무료 Maingun 계정으로 월 10,000통의 이메일을 보낼 수 있어 많은 중소기업 웹사이트에 충분한 수치입니다.
Mailgun을 사용해 이메일을 보낼 때는 먼저 계정을 등록해야 하며, 그 후 Mailgun에서 제공하는 Rest API를 사용해 이메일을 관리할 수 있습니다. Mailgun과 FluentEmail 연동은 다음과 같은 패키지만 추가하면 됩니다:
Mailgun 등록 후 API 키와 2차 도메인 이름이 할당되며, 다음과 같이 구성해야 합니다:
요약
위 예시들에서 MailKit과 FluentEmail이 각각의 장단점을 가지고 있음을 알 수 있습니다. MailKit의 장점은 여러 프로토콜을 지원하고 크로스 플랫폼이라는 점이지만, 단점은 Razor를 지원하지 않고, Mailgun을 사용할 경우 직접 통합해야 한다는 점입니다. FlentEmail의 장점은 Razor 템플릿을 지원하고 Mailgun을 캡슐화한다는 점이지만, 단점은 SMTP 프로토콜이 아직 .NET Core를 지원하지 않는다는 점입니다.
요약하자면, Mailgun을 사용해 이메일을 보내신다면 FluentEmail을 선택해야 하고, SMTP 프로토콜을 사용해 메일 서버에 연결해 이메일을 보내고 싶다면 MailKit을 사용하는 것이 좋습니다.
|