>  기사  >  백엔드 개발  >  ASP.NET Core가 이메일을 보냅니다.

ASP.NET Core가 이메일을 보냅니다.

大家讲道理
大家讲道理원래의
2017-05-31 14:33:342678검색

머리말

현재 .NET Core는 SMTP 프로토콜을 지원하지 않는다는 것을 알고 있습니다. 이메일 전송 기능을 사용할 때 목표를 달성하려면 일부 타사 구성 요소를 사용해야 합니다. 오늘은 두 가지 오픈 소스를 소개하겠습니다. 구성 요소는 각각 MailKitFluentEmail입니다.

MailKit

ASP.NET Core에서는 MailKit을 사용하여 이메일을 보낼 수 있으며 크로스 플랫폼을 지원하고 IMAP, POP3, SMTP 및 기타 프로토콜을 지원합니다.

다음 방법을 사용할 수 있습니다

install:

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 Email도 오픈 소스 프로젝트이므로

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 packageEmail.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 구문 템플릿 String

을 사용한 다음 UsingTemplate을 사용하여 렌더링합니다. Email.DefaultRenderer 是告诉FulentEmail 使用哪个渲染器(你也可以自己实现一个自己的),然后提供了一个 template 模板,内容为 Razor 语法的模板字符串,然后使用 UsingTemplate

cshtml template on disk

Add to your email 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은 외국 이메일 서비스 회사입니다. 예를 들어 유명한 Git허브 이메일 서비스가 여기에서 호스팅됩니다. . 무료 Maingun 계정은 한 달에 10,000개의 이메일을 보낼 수 있으며 이는 많은 중소 규모 웹사이트에 충분합니다.

Mailgun을 사용하여 이메일을 보낼 때는 먼저 계정을 등록해야 하며, 그런 다음 Mailgun에서 제공하는 Rest

API를 사용하여 주고받은 이메일을 관리할 수 있습니다. FluentEmail 통합 Mailgun을 사용하려면 다음 패키지만 추가하면 됩니다.

Install-Package FluentEmail.Mailgun
Mailgun을 등록하면 API

Key와 2차 도메인 이름이 할당됩니다. 프로그램에서 다음 구성이 필요합니다.


// 同时支持 .NET Core 和 .NET Frameworkvar 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();

Summary

위의 예를 통해 MailKit과 FluentEmail은 각각 장단점이 있음을 알 수 있습니다. MailKit의 장점은 많은 프로토콜을 지원하고 크로스 플랫폼이라는 점이지만, 단점은 Razor에 대한 지원을 제공하지 않으며 Mailgun을 사용하는 경우 직접 통합해야 한다는 점입니다. FlentEmail의 장점은 Razor 템플릿에 대한 지원을 제공하고 Mailgun을 캡슐화한다는 것입니다. 단점은 SMTP 프로토콜이 아직 .NET Core에 대한 지원을 제공하지 않는다는 것입니다.

요약하자면, Mailgun을 사용하여 이메일을 보내는 경우 FluentEmail을 선택해야 합니다. SMTP 프로토콜을 사용하여 이메일을 보내기 위해 자신의 메일 서버에 연결하려면 MailKit을 사용해야 합니다.

위 내용은 ASP.NET Core가 이메일을 보냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.