


Detailed explanation of the code to implement email sending in .NET
This article mainly introduces the method of sending emails in ASP.NET Core in detail and tells you how to send emails in ASP.NET Core. It has certain reference value. Interested friends can refer to it
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 it. Purpose, today I will introduce to you two open source email sending components, namely 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 the Body content you want to send 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 is also an open source project. With it, you can use the Razor template to send emails, and you can integrate some third-party email sending programs such as Mailgun, etc., but this package is only available under .NET 4.6 Only supports SMTP. You can use the following command to install it:
Install-Package FluentEmail.Razor
You can use the most basic way to send emails, it is as simple as the following :
//注意: .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 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 tells FulentEmail which renderer to use (you also You can implement your own), and then provide a template template whose content is Razor syntax template string , and then use UsingTemplate for rendering.
cshtml template on disk
Add to your email Razor template file is relatively large, and it is not elegant to express it with a string, then you can put the template file in to the disk, and then load it using the following method:
//注意: .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 mail
There may be some people who are not clear about Mailgun. Mailgun is a foreign Email service companies, such as the famous Github email service, are hosted on it. The free Maingun account can send 10,000 emails per month, which 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 FluentEmail integrated Mailgun, 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 the following configuration:
// 同时支持 .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();
Summary
Through the above example we can see that MailKit and FluentEmail Each has 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 .
【Related Recommendations】
2. ASP Tutorial
3. Li Yanhui ASP basic video tutorial
The above is the detailed content of Detailed explanation of the code to implement email sending in .NET. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



In C language, special characters are processed through escape sequences, such as: \n represents line breaks. \t means tab character. Use escape sequences or character constants to represent special characters, such as char c = '\n'. Note that the backslash needs to be escaped twice. Different platforms and compilers may have different escape sequences, please consult the documentation.

In C, the char type is used in strings: 1. Store a single character; 2. Use an array to represent a string and end with a null terminator; 3. Operate through a string operation function; 4. Read or output a string from the keyboard.

The usage methods of symbols in C language cover arithmetic, assignment, conditions, logic, bit operators, etc. Arithmetic operators are used for basic mathematical operations, assignment operators are used for assignment and addition, subtraction, multiplication and division assignment, condition operators are used for different operations according to conditions, logical operators are used for logical operations, bit operators are used for bit-level operations, and special constants are used to represent null pointers, end-of-file markers, and non-numeric values.

The difference between multithreading and asynchronous is that multithreading executes multiple threads at the same time, while asynchronously performs operations without blocking the current thread. Multithreading is used for compute-intensive tasks, while asynchronously is used for user interaction. The advantage of multi-threading is to improve computing performance, while the advantage of asynchronous is to not block UI threads. Choosing multithreading or asynchronous depends on the nature of the task: Computation-intensive tasks use multithreading, tasks that interact with external resources and need to keep UI responsiveness use asynchronous.

In C language, the main difference between char and wchar_t is character encoding: char uses ASCII or extends ASCII, wchar_t uses Unicode; char takes up 1-2 bytes, wchar_t takes up 2-4 bytes; char is suitable for English text, wchar_t is suitable for multilingual text; char is widely supported, wchar_t depends on whether the compiler and operating system support Unicode; char is limited in character range, wchar_t has a larger character range, and special functions are used for arithmetic operations.

In C language, char type conversion can be directly converted to another type by: casting: using casting characters. Automatic type conversion: When one type of data can accommodate another type of value, the compiler automatically converts it.

The char array stores character sequences in C language and is declared as char array_name[size]. The access element is passed through the subscript operator, and the element ends with the null terminator '\0', which represents the end point of the string. The C language provides a variety of string manipulation functions, such as strlen(), strcpy(), strcat() and strcmp().

There is no built-in sum function in C language, so it needs to be written by yourself. Sum can be achieved by traversing the array and accumulating elements: Loop version: Sum is calculated using for loop and array length. Pointer version: Use pointers to point to array elements, and efficient summing is achieved through self-increment pointers. Dynamically allocate array version: Dynamically allocate arrays and manage memory yourself, ensuring that allocated memory is freed to prevent memory leaks.
