MailKit: 在 .NET 中实现高效电子邮件发送与接收

news/2025/2/26 14:42:13

在现代应用程序中,电子邮件仍然是重要的通讯方式之一。无论是个人应用程序还是企业级系统,邮件发送和接收功能都经常是必不可少的。本文将介绍如何使用 MailKit 这个强大的 .NET 库来实现发送和接收电子邮件的功能。

简介

MailKit 是一个跨平台的 .NET 库,专门用于处理电子邮件。它支持多种协议,包括:

  • IMAP(用于接收邮件)
  • SMTP(用于发送邮件)
  • POP3(老旧的邮件接收协议)

MailKit 具有易用的 API 和高度的灵活性,适用于各种邮件应用的开发。

安装

第一步,老规矩,先安装

Install-Package MailKit

发送电子邮件

using MailKit.Net.Smtp;
using MimeKit;

public class EmailSender
{
    public void SendEmail()
    {
        var message = new MimeMessage();
        message.From.Add(new MailboxAddress("Name", "email@example.com"));
        message.To.Add(new MailboxAddress("Recipient Name", "recipient-email@example.com"));
        message.Subject = "Test Email";

        // 创建邮件内容
        message.Body = new TextPart("plain")
        {
            Text = "Hello, this is a test email!"
        };

        // 设置 SMTP 服务器
        using (var client = new SmtpClient())
        {
            client.Connect("smtp.example.com", 587, false);  // 连接到 SMTP 服务器
            client.Authenticate("email@example.com", "email-password");  // 登录

            // 发送邮件
            client.Send(message);
            client.Disconnect(true);  // 断开连接
        }
    }
}
  • MimeMessage 用于构建邮件,包括发件人、收件人、主题和正文。
  • 使用 SmtpClient 类连接到 SMTP 服务器,进行邮件的发送。
  • Authenticate 方法用于提供用户名和密码进行身份验证。

替换代码中的 smtp.example.com、用户名、密码和邮件地址即可。

为了确保邮件传输的安全性,MailKit 支持使用 SSL 或 TLS 加密进行连接。在发送邮件时,可以使用端口 465 来启用 SSL 连接:

client.Connect("smtp.example.com", 465, true);  // 使用 SSL 加密连接

接收电子邮件

使用 IMAP 协议

using MailKit.Net.Imap;
using MimeKit;

public class EmailReceiver
{
    public void ReadEmails()
    {
        using (var client = new ImapClient())
        {
            // 连接到 IMAP 服务器并启用 SSL
            client.Connect("imap.example.com", 993, true);

            // 登录到邮箱
            client.Authenticate("email@example.com", "email-password");

            // 打开收件箱
            var inbox = client.Inbox;
            inbox.Open(FolderAccess.ReadOnly);  // 只读访问

            // 获取最新的邮件
            var message = inbox.GetMessage(inbox.Count - 1);
            Console.WriteLine("Subject: " + message.Subject);
            Console.WriteLine("Body: " + message.TextBody);

            // 断开连接
            client.Disconnect(true);
        }
    }
}

使用 ImapClient 类连接到 IMAP 服务器,进行身份验证并打开收件箱。然后,获取最新的邮件并打印邮件的主题和正文。

获取最新邮件

通过 inbox.GetMessage(inbox.Count - 1),我们可以获取收件箱中最新的邮件。如果需要获取多封邮件,可以使用循环遍历 inbox.Messages

总结

MailKit 是一个功能强大且易于使用的 .NET 库,适用于电子邮件的发送与接收。无论是构建个人项目,还是开发企业级应用程序,MailKit 都是一个非常合适的选择。


http://www.niftyadmin.cn/n/5868837.html

相关文章

python实现基于文心一言大模型的sql小工具

一、准备工作 注册与登录: 登录百度智能云千帆控制台,注册并登录您的账号。 创建千帆应用: 根据实际需求创建千帆应用。创建成功后,获取AppID、API Key、Secret Key等信息。如果已有千帆应用,可以直接查看已有应用的AP…

在Spring Boot+Vue前后端分离的项目中使用JWT实现基本的权限校验

说明 在 Spring Boot + Vue 前后端分离的项目中,如果不使用第三方服务(如 Spring Security、Shiro 等),可以通过自定义实现基本的权限校验。 使用JWT实现步骤 以下是实现步骤: 1. 设计权限模型 通常权限模型包括: 用户(User):系统的使用者。角色(Role):用户的权…

WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…

三角函数和差角公式对于任意角的证明(代数法)

前置知识:平面向量、诱导公式 和差角公式的证明如下: ​ 对于每个始边为 x x x 轴正半轴的角 θ \theta θ ,令平面向量 a ⃗ θ \vec a_{\theta} a θ​ 是 x O y xOy xOy 中,以 O O O 为起点,方向沿着的 θ …

FS800DTU联动OneNET平台数据可视化View

目录 1 前言 2 环境搭建 2.1 硬件准备 2.2 软件环境 2.3 硬件连接 3 注册OneNET云平台并建立物模型 3.1 参数获取 3.2 连接OneNET 3.3上报数据 4 数据可视化View 4.1 用户信息获取 4.2 启用数据可视化View 4.3 创建项目 4.4 编辑项目 4.5 新增数据源 4.6 数据过滤器配置 4.6 项…

QT入门--QMainWindow

从上向下依次是菜单栏,工具栏,铆接部件(浮动窗口),状态栏,中心部件 菜单栏 创建菜单栏 QMenuBar* mybar1 menuBar(); 将菜单栏放到窗口中 setMenuBar(mybar1); 创建菜单 QMenu *myfilemenu mybar1-…

HTTP/HTTPS 服务端口监测的简易实现

一 HTTP/HTTPS 服务端口监测的简易实现方法 在当今快节奏的工作环境中,工作忙碌成为了许多职场人的常态。就拿我们团队最近经历的事情来说,工作任务一个接一个,大家都在各自的岗位上争分夺秒地忙碌着。然而,就在这样高强度的工作…

《迈向认知智能新高度:深度融合机器学习与知识图谱技术》

在人工智能的蓬勃发展进程中,机器学习与知识图谱技术正逐渐成为推动行业变革的关键力量。机器学习赋予机器从数据中学习并做出预测的能力,知识图谱则以结构化的方式描绘现实世界中实体与关系,为机器理解知识提供了语义框架。将二者深度融合&a…