Home Backend Development C#.Net Tutorial Detailed explanation of the code to implement email sending in .NET

Detailed explanation of the code to implement email sending in .NET

May 12, 2017 am 10:09 AM
asp.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);
}
Copy after login

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();
Copy after login

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();
Copy after login

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" });
Copy after login

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"})
Copy after login

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();
Copy after login

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】

1. ASP Free Video Tutorial

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!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to handle special characters in C language How to handle special characters in C language Apr 03, 2025 pm 03:18 PM

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.

What is the role of char in C strings What is the role of char in C strings Apr 03, 2025 pm 03:15 PM

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.

How to use various symbols in C language How to use various symbols in C language Apr 03, 2025 pm 04:48 PM

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 c# The difference between multithreading and asynchronous c# Apr 03, 2025 pm 02:57 PM

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.

The difference between char and wchar_t in C language The difference between char and wchar_t in C language Apr 03, 2025 pm 03:09 PM

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.

How to convert char in C language How to convert char in C language Apr 03, 2025 pm 03:21 PM

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.

How to use char array in C language How to use char array in C language Apr 03, 2025 pm 03:24 PM

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().

What is the function of C language sum? What is the function of C language sum? Apr 03, 2025 pm 02:21 PM

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.

See all articles