C# 使用 MailKit 发送邮件(附demo)
- 介绍
- 安装包(依赖)
- 案例
- 简单代码
- 属性介绍:MailboxAddress
- 属性介绍:BodyBuilder
- SMTP 服务器端口
- SSL的案例:
- 非SSL:
- 介绍一下SMTP
介绍
MailKit 是一个开源的 C# 邮件处理库,用于在应用程序中发送和接收电子邮件。它提供了一个强大且易于使用的 API,支持多种邮件协议,包括 SMTP、POP3、和 IMAP。
特性与优势 | 描述 |
---|---|
多协议支持 | 支持 SMTP、POP3、IMAP 等多种邮件协议。 |
异步操作 | 使用异步编程模型,提高性能和响应性。 |
附件处理 | 提供灵活的附件处理功能,支持添加、读取和保存邮件附件。 |
SSL/TLS 支持 | 支持安全套接字层(SSL)和传输层安全性(TLS),确保邮件的安全传输。 |
容错处理 | 提供容错处理机制,处理网络或协议错误,确保稳定的邮件通信。 |
丰富的 API | 提供丰富的 API,方便开发人员访问邮件的各个方面,包括主题、发件人、收件人等。 |
跨平台 | MailKit 是一个跨平台的邮件处理库,可在多个操作系统上运行,包括 Windows、Linux 和 macOS。 |
需要源码的留下邮箱,私信也会看,不过看的不勤,留言有通知。
安装包(依赖)
通过命令操作 NuGet 包管理器进行安装:
Install-Package MailKit -Version 2.15.0
通过管理 NuGet 程序包进行安装
案例
简单代码
以下是一个简单的示例,演示如何使用 MailKit 发送邮件:
using MailKit.Net.Smtp;
using MimeKit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SMTPEmailDemo
{
internal class Program
{
static void Main()
{
// 发件人邮箱和密码
string senderEmail = "csdndaolizhe@163.com";
string senderPassword = "AOKRBYUISXPAITAI";
// 收件人邮箱
string recipientEmail = "邮箱地址";//csdndaolizhe@163.com
// 创建邮件对象
var message = new MimeMessage();
message.From.Add(new MailboxAddress("daolizhe", senderEmail));
message.To.Add(new MailboxAddress("名字", recipientEmail));
message.Subject = "主题";
// 邮件正文
var bodyBuilder = new BodyBuilder();
bodyBuilder.TextBody = "邮件内容。";
message.Body = bodyBuilder.ToMessageBody();
// 配置SMTP客户端
using (var client = new SmtpClient())
{
// 连接到SMTP服务器
client.Connect("smtp.163.com", 25, false);
// 使用邮箱和密码进行身份验证
client.Authenticate(senderEmail, senderPassword);
// 发送邮件
client.Send(message);
// 断开连接
client.Disconnect(true);
}
}
}
}
属性介绍:MailboxAddress
属性 | 描述 | 示例 |
---|---|---|
Name | 邮箱地址的名称部分,通常是名字或昵称。 | “daolizhe” |
Address | 邮箱地址的实际地址部分。 | “csdndaolizhe@163.com” |
属性介绍:BodyBuilder
成员属性 | 描述 | 示例 |
---|---|---|
TextBody | 用于设置纯文本正文的属性。 | bodyBuilder.TextBody = "邮件内容。"; |
HtmlBody | 用于设置HTML正文的属性。 | bodyBuilder.HtmlBody = "<p>邮件内容。</p>"; |
Attachments | 用于添加附件的集合属性。 | bodyBuilder.Attachments.Add(文件路径); |
SMTP 服务器端口
SMTP服务器 | 服务器地址 | 端口 | 规则 |
---|---|---|---|
Gmail | smtp.gmail.com | 587(TLS加密)或465(SSL加密) | 需要使用Gmail帐户进行身份验证,通常需要启用“低安全性应用程序访问权限”。 |
Outlook/Office 365 | smtp.office365.com | 587 | 需要使用Outlook或Office 365帐户进行身份验证。 |
163 | smtp.office365.com | 465(SSL加密) / 25 | 需要使用163帐户进行身份验证。 |
自己托管的SMTP服务器 | 取决于设置 | 通常是25(未加密)、587(TLS加密)、465(SSL加密)中的一个 | 需要使用合适的身份验证(例如,用户名和密码)。 |
在代码中对应的位置就是
SSL的案例:
// 配置SMTP客户端
using (var client = new SmtpClient())
{
// 连接到SMTP服务器
client.Connect("smtp.163.com", 465, true);
// 使用邮箱和密码进行身份验证
client.Authenticate(senderEmail, senderPassword);
// 发送邮件
client.Send(message);
// 断开连接
client.Disconnect(true);
}
非SSL:
// 配置SMTP客户端
using (var client = new SmtpClient())
{
// 连接到SMTP服务器
client.Connect("smtp.163.com", 25, false);
// 使用邮箱和密码进行身份验证
client.Authenticate(senderEmail, senderPassword);
// 发送邮件
client.Send(message);
// 断开连接
client.Disconnect(true);
}
介绍一下SMTP
特点和概念 | 描述 |
---|---|
SMTP(Simple Mail Transfer Protocol) | 用于在网络中传输电子邮件的标准协议。 |
电子邮件传输 | SMTP负责将电子邮件从发件人的邮件客户端传输到接收者的邮件服务器,然后再传递到接收者的邮件客户端。 |
端口 | SMTP服务器通常监听在端口25上,也可以使用端口587(Submission)和端口465(SMTPS)进行加密的SMTP通信。 |
发件人和收件人 | 在SMTP通信中指定邮件的发件人和收件人,以确保邮件被正确地路由到目标。 |
命令和响应 | SMTP通信是基于命令和响应的。客户端向服务器发送SMTP命令,服务器返回响应,以便客户端了解操作的状态。 |
身份验证 | SMTP服务器通常要求用户进行身份验证,以防止滥用。常见的身份验证方法包括使用用户名和密码。 |
安全性 | 为了提高安全性,可以使用TLS(Transport Layer Security)或SSL(Secure Sockets Layer)加密SMTP通信。 |
与POP3和IMAP的关系 | SMTP通常与POP3或IMAP一起使用。POP3和IMAP用于从服务器检索邮件,而SMTP用于发送邮件。 |