MailKit for C# (.NET): 完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

MailKit for C# (.NET): 完整指南与示例

\n\n

1. 什么是 MailKit 及其用途

\n\n

MailKit 是一个功能强大、跨平台的开源库,用于在 .NET 生态系统中处理电子邮件。它提供了一套完整的工具,用于创建、发送、接收和处理电子邮件消息。与过时的 System.Net.Mail 不同,MailKit 提供了现代化的 API,完全支持 MIME(多用途互联网邮件扩展)、S/MIME 和 OpenPGP,以及异步操作,这对于高负载应用程序至关重要。

\n\n

为什么需要 MailKit?如果您使用 C# 开发,并且需要发送带附件的电子邮件、解析传入邮件、处理不同的邮件协议(SMTP、POP3、IMAP)或处理复杂的邮件格式(HTML、附件、签名),那么 MailKit 将成为您不可或缺的工具。它已被数千家公司用于生产环境,包括 Microsoft(在某些内部服务中),并支持 .NET Framework、.NET Core、.NET 5+ 甚至 Xamarin/MAUI。

\n\n

MailKit 相对于同类产品的主要优势:完全支持最新的电子邮件标准(RFC 2045-2049、RFC 2822、RFC 5322)、内置 SSL/TLS 支持、代理支持、大附件的流式处理以及通过使用 System.IO.Pipelines 和 async/await 实现的高性能。

\n\n

2. 安装

\n\n

MailKit 通过 NuGet 包管理器安装。在包管理器控制台(Package Manager Console)或 .NET CLI 终端中执行以下任一命令:

\n\n
// 通过 .NET CLI\ndotnet add package MailKit\n\n// 通过 Package Manager Console\nInstall-Package MailKit\n\n// 或者通过 Visual Studio 中的 NuGet Package Manager\n// 搜索 "MailKit" 并安装最新的稳定版本
\n\n

安装后,项目将添加对 MimeKit(用于处理 MIME 消息的基础库)的依赖——它会作为传递依赖自动安装。

\n\n

3. 快速入门——最小工作示例

\n\n

以下是通过 Gmail SMTP 服务器发送简单文本电子邮件的最小示例。请注意:使用 Gmail 需要使用应用密码(App Password)或 OAuth 2.0。

\n\n
using MailKit.Net.Smtp;\nusing MimeKit;\n\n// 创建消息\nvar message = new MimeMessage();\nmessage.From.Add(new MailboxAddress("发件人", "sender@gmail.com"));\nmessage.To.Add(new MailboxAddress("收件人", "recipient@example.com"));\nmessage.Subject = "来自 MailKit 的测试邮件";\nmessage.Body = new TextPart("plain") { Text = "你好!这是一条测试消息。" };\n\n// 通过 SMTP 发送\nusing (var client = new SmtpClient())\n{\n    client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);\n    client.Authenticate("sender@gmail.com", "your-app-password");\n    client.Send(message);\n    client.Disconnect(true);\n}\n\nConsole.WriteLine("邮件已发送!");
\n\n

4. 主要方法/函数/类

\n\n

4.1. SmtpClient.Connect()

\n

签名: Task ConnectAsync(string host, int port, SecureSocketOptions options, CancellationToken cancellationToken = default)

\n

功能: 建立与 SMTP 服务器的连接。参数 SecureSocketOptions 定义加密类型:None、Auto、SslOnConnect、StartTls。

\n\n
using var client = new SmtpClient();\nawait client.ConnectAsync("smtp.mail.ru", 465, SecureSocketOptions.SslOnConnect);
\n\n

4.2. SmtpClient.Authenticate()

\n

签名: Task AuthenticateAsync(string user

推荐