媒介
我们晓得现在 .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); }
假如你要发送的 Body 内容是 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 运用哪一个衬着器(你也能够本身完成一个本身的),然后供应了一个 template 模板,内容为 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 账户每月能够发送 10000 封邮件,关于许多中小网站充足用了。
当运用 Mailgun 来发送邮件的时刻,你起首须要去注册一个账号,然后能够应用 Mailgun 供应的 Rest API 来治理发送或许吸收的邮件。运用 FluentEmail 集成的 Mailgun只须要增加以下包:
Install-Package FluentEmail.Mailgun
注册完 Mailgun 以后会给你分派一个 API Key 和一个二级域名,在顺序种,你须要以下设置:
// 同时支撑 .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();
总结
经由过程上述示例我们能够看出 MailKit 和 FluentEmail 各有优瑕玷。MailKit 的长处是支撑的协定比较多,而且是跨平台的,然则瑕玷是没有供应对 Razor的支撑,而且假如运用 Mailgun 的话须要本身举行集成。 那末 FlentEmail 的长处是供应了 Razor 模板的支撑而且封装了 Mailgun, 瑕玷是 SMTP 协定还没有供应对 .NET Core 的支撑。
综上所述,假如你运用 Mailgun 来发送邮件的话,那末 FluentEmail 是你应当挑选的,假如你想运用 SMTP 协定链接到本身的邮件效劳器来发送邮件的话,那末你应当用 MailKit。
以上就是ASP.NET Core 发送邮件 的细致内容,更多请关注ki4网别的相干文章!