Home  >  Article  >  Backend Development  >  ASP.NET Core sends email

ASP.NET Core sends email

大家讲道理
大家讲道理Original
2017-05-31 14:33:342678browse

Preface

We know that currently .NET Core does not support the SMTP protocol. When we use the function of sending emails, we need to use some third-party components to achieve the purpose. Today I will introduce to you two There are two open source mail sending components, they are MailKit and FluentEmail. I will introduce them respectively below.

MailKit

In ASP.NET Core, you can use MailKit to send emails. It supports cross-platform and supports IMAP, POP3 , SMTP and other protocols.

You can use the following methodInstallation:

Install-Package MailKit

The following is a simple example of sending an email:

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);
}

If you want to send the Body If the content is HTML, you can use the following:

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 This is also an open source project. Using it, you can use the Razor template. Send emails, and can integrate some third-party email sending programs such as Mailgun, etc., but this package only supports SMTP under .NET 4.6. You can install it using the following command:

Install-Package FluentEmail.Razor

You can use the most basic way to send an email, which is as simple as this:

//注意: .NET 4.6 才支持Email.DefaultSender = new SmtpSender();var email = Email
    .From("foo@email.com")
    .To("bar@email.com", "bob")
    .Subject("星期天去哪里玩?")
    .Body("我想去故宫玩,如何?");

await email.SendAsync();

Alternatively, you can use the Razor template to send:


//注意: .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 tells FulentEmail which renderer to use (you can also implement your own), and then provides a template with the content: Template String of Razor syntax, and then use UsingTemplate for rendering.

cshtml template on disk

Add to your email The Razor template file is relatively large, and it is not elegant to express it with a string. Then you can put the template file on the disk and then use Load it as follows:


//注意: .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"})

Use Mailgun to send emails

Some people may not know much about Mailgun,Mailgun is a foreign email service company. For example, the famous Github's email service is hosted on it. The free Maingun account can send messages every month 10,000 emails is enough for many small and medium-sized websites.

When using Mailgun to send emails, you first need to register an account, and then you can use the Rest API provided by Mailgun to manage the emails sent or received. To use Mailgun integrated with FluentEmail, you only need to add the following package:

Install-Package FluentEmail.Mailgun

After registering Mailgun, you will be assigned an API Key and a second-level domain name. In the program, you need to configure as follows:


// 同时支持 .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

Through the above examples, we can see that MailKit and FluentEmail each have their own advantages and disadvantages. The advantage of MailKit is that it supports many protocols and is cross-platform, but the disadvantage is that it does not provide support for Razor, and if you use Mailgun, you need to integrate it yourself. The advantage of FlentEmail is that it provides support for Razor templates and encapsulates Mailgun. The disadvantage is that the SMTP protocol does not yet provide support for .NET Core.

To sum up, if you use Mailgun to send emails, then FluentEmail is the one you should choose. If you want to use the SMTP protocol to connect to your own mail server to send emails, then you should use MailKit .

The above is the detailed content of ASP.NET Core sends email. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn