媒介
我们晓得现在 .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 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 运用哪一个衬着器(你也能够本身完成一个本身的),然后供应了一个 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 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 协定链接到本身的邮件效劳器来发送邮件的话,那末你应当用 MailKit。
【相干引荐】
1. ASP免费视频教程
2. ASP教程
3. 李炎恢ASP基本视频教程
以上就是.NET完成邮件发送的代码详解的细致内容,更多请关注ki4网别的相干文章!