집 >백엔드 개발 >C#.Net 튜토리얼 >.NET에서 이메일 전송을 구현하는 코드에 대한 자세한 설명
이 글은 주로 ASP.NET Core에서 이메일을 보내는 방법을 자세하게 소개하고 있으며, ASP.NET Core에서 이메일을 보내는 방법에 대해 설명하고 있으니 관심 있는 분들은 참고하시기 바랍니다.
머리말
우리는 현재 .NET Core가 SMTP 프로토콜을 지원하지 않는다는 것을 알고 있습니다. 이메일 보내기 기능을 사용하려면 이를 위해 일부 타사 구성 요소를 사용해야 합니다. , 오늘은 MailKit과 FluentEmail이라는 두 가지 오픈 소스 이메일 전송 구성 요소를 소개하겠습니다.
MailKit
ASP.NET Core에서는 MailKit을 사용하여 크로스 플랫폼을 지원하고 IMAP, POP3, SMTP 및 기타 프로토콜을 지원합니다.
다음을 사용하여 설치할 수 있습니다.
Install-Package MailKit
다음은 간단한 예입니다. 이메일 보내기:
var message = new MimeMessage (); message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com")); message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "chandler@friends.com")); message.Subject = "星期天去哪里玩?"; message.Body = new TextPart ("plain") { Text = "我想去故宫玩,如何" }; using (var client = new SmtpClient ()) { // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) client.ServerCertificateValidationCallback = (s,c,h,e) => true; client.Connect ("smtp.friends.com", 587, false); // Note: since we don't have an OAuth2 token, disable // the XOAUTH2 authentication mechanism. client.AuthenticationMechanisms.Remove ("XOAUTH2"); // Note: only needed if the SMTP server requires authentication client.Authenticate ("joey", "password"); client.Send (message); client.Disconnect (true); }
보내려는 본문 콘텐츠가 HTML인 경우 다음을 사용할 수 있습니다.
var bodyBuilder = new BodyBuilder(); bodyBuilder.HtmlBody = @"<b>This is bold and this is <i>italic</i></b>"; message.Body = bodyBuilder.ToMessageBody();
Fluent Email
Fluent 이메일도 오픈 소스 프로젝트이므로 Razor 템플릿을 사용하여 이메일을 보낼 수 있고 Mailgun 등과 같은 일부 타사 이메일 전송 프로그램을 통합할 수 있지만 이 패키지만 사용할 수 있습니다. .NET 4.6에서는 SMTP만 지원합니다. 다음 명령을 사용하여 설치할 수 있습니다.
Install-Package FluentEmail.Razor
전자 메일을 보내는 가장 기본적인 방법을 사용할 수 있습니다. 다음과 같이 간단합니다.
//注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .Body("我想去故宫玩,如何?"); await email.SendAsync();
또는 Razor 템플릿을 사용하여 보낼 수 있습니다.
//注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); // Using Razor templating package Email.DefaultRenderer = new RazorRenderer(); var template = "Dear @Model.Name, You are totally @Model.Compliment."; var email = Email .From("bob@hotmail.com") .To("somedude@gmail.com") .Subject("woo nuget") .UsingTemplate(template, new { Name = "Luke", Compliment = "Awesome" });
Email.DefaultRenderer 는 FulentEmail에 어떤 렌더러를 알려줍니다. (직접 구현할 수도 있음) Razor 구문 템플릿 문자열 인 템플릿 템플릿을 제공한 다음 UsingTemplate을 사용하여 렌더링합니다. .
디스크의 cshtml 템플릿
이메일에 추가하세요. Razor 템플릿 파일은 상대적으로 크기 때문에 문자열로 표현하기에는 우아하지 않습니다. 템플릿 파일을 디스크에 넣은 후 다음 방법을 사용하여 로드할 수 있습니다.
//注意: .NET 4.6 才支持 Email.DefaultSender = new SmtpSender(); Email.DefaultRenderer = new RazorRenderer(); var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .UsingTemplateFromFile($"{Directory.GetCurrentDirectory}/EmailTemplage.cshtml", new {Name ="Luke"})
Mailgun을 사용하여 메일 보내기
어떤 사람들은 잘 알지 못할 수도 있습니다 Mailgun, Mailgun은 유명한 Github 이메일 서비스와 같은 외국 이메일 서비스 회사가 호스팅됩니다. 무료 Maingun 계정은 한 달에 10,000개의 이메일을 보낼 수 있으며 이는 많은 중소 규모 웹 사이트에 충분합니다.
Mailgun을 사용하여 이메일을 보낼 때는 먼저 계정을 등록한 후 Mailgun에서 제공하는 RestAPI를 사용하여 주고받은 이메일을 관리할 수 있습니다. FluentEmail과 통합된 Mailgun을 사용하려면 다음 패키지만 추가하면 됩니다:
Install-Package FluentEmail.Mailgun
Mailgun을 등록한 후 API Key 및 2차 도메인 이름을 할당했습니다. 프로그램에서는 다음 구성이 필요합니다.
// 同时支持 .NET Core 和 .NET Framework var sender = new MailgunSender( "sandboxcf5f41bbf2f84f15a386c60e253b5fe8.mailgun.org", // Mailgun 二级域名 "key-8d32c046d7f14ada8d5ba8253e3e30df" // Mailgun API Key ); Email.DefaultSender = sender; var email = Email .From("foo@email.com") .To("bar@email.com", "bob") .Subject("星期天去哪里玩?") .Body("我想去故宫玩,如何?"); await email.SendAsync();
요약
위의 예에서는 MailKit과 FluentEmail 각각에 장단점이 있음을 알 수 있습니다. MailKit의 장점은 많은 프로토콜을 지원하고 크로스 플랫폼이라는 점이지만, 단점은 Razor에 대한 지원을 제공하지 않으며 Mailgun을 사용하는 경우 직접 통합해야 한다는 점입니다. FlentEmail의 장점은 Razor 템플릿에 대한 지원을 제공하고 Mailgun을 캡슐화한다는 것입니다. 단점은 SMTP 프로토콜이 아직 .NET Core에 대한 지원을 제공하지 않는다는 것입니다.
요약하자면, Mailgun을 사용하여 이메일을 보내는 경우 FluentEmail을 선택해야 합니다. SMTP 프로토콜을 사용하여 이메일을 보내기 위해 자신의 메일 서버에 연결하려면 다음을 사용해야 합니다. 메일킷 .
【관련 추천】
위 내용은 .NET에서 이메일 전송을 구현하는 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!