C# 使用 MailKit 接收邮件(附demo)

C# 使用 MailKit 接收邮件(附demo)

  • 介绍
  • 安装包(依赖)
  • 案例
    • 简单代码
  • 获取附件
    • 核心代码
    • 完整代码
  • 介绍一下POP3


介绍

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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MailKit.Net.Pop3;
using MimeKit;namespace Pop3EmailDemo
{internal class Program{static void Main(string[] args){using (var client = new Pop3Client()){// 邮箱信息string email = "csdndaolizhe@163.com";string password = "AOKRBYUISXPAITAI";// POP3 服务器和端口string pop3Server = "pop.163.com";int pop3Port = 995;// 连接到 POP3 服务器client.Connect(pop3Server, pop3Port, true);// 登录client.Authenticate(email, password);// 获取邮件数量int messageCount = client.Count;// 遍历邮件for (int i = 0; i < messageCount; i++){// 获取邮件 UIDvar uid = client.GetMessageUid(i);Console.WriteLine($"\r\n{email} \r\n接收到邮件 {uid}\r\n");// 获取邮件MimeMessage message = client.GetMessage(i);Console.WriteLine($"\r\n标题:{message.Subject} \r\n内容:{message.TextBody}\r\n");// 断开连接client.Disconnect(true);}}}}
}

我这里展示一下网易163邮箱的POP3开启方式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

AOKRBYUISXPAITAI

POP3 服务器地址
在这里插入图片描述

由于我这里是自己给自己发的邮件,所以可以看到自己的邮件内容

在这里插入图片描述

以下是 MimeMessage 类中的一些主要字段及其解释:

字段类型解释
FromInternetAddressList发件人的电子邮件地址列表,表示邮件的实际发件人或邮件的代理发件人。 常用
SenderInternetAddress实际发送邮件的用户或代理的电子邮件地址。在协作场景中,与 From 可能不同。
ReplyToInternetAddressList邮件回复时使用的地址列表,指定了接收回复的地址,不一定与发件人相同。
ToInternetAddressList收件人的电子邮件地址列表,表示邮件的主要接收人。
CcInternetAddressList抄送收件人的电子邮件地址列表,指定了附加接收邮件的地址,不是主要的接收人。
BccInternetAddressList密送收件人的电子邮件地址列表,接收邮件的人不会看到这个地址。
MessageIdstring用于唯一标识邮件的字符串,在电子邮件通信中是邮件的唯一标识符。
DateDateTime表示邮件发送日期和时间的时间戳,用于指示邮件的发送时间。 常用
Subjectstring邮件的主题或标题,描述邮件内容的简短文本。常用
HtmlBodystring邮件的正文内容,可以是纯文本 (TextPart) 或包含多个部分的复合体 (Multipart),如 HTML、附件等。
TextBodystring邮件的正文纯文本,特别纯,一般常用 的就是这个
AttachmentsIEnumerable<MimePart>包含在邮件中的附件列表,每个附件是一个 MimePart 对象,表示二进制数据或其他嵌套消息。

在这里插入图片描述

获取附件

核心代码


// 处理邮件附件
foreach (var attachment in message.Attachments)
{if (attachment.IsAttachment)if (attachment is MimePart){var part = (MimePart)attachment;var fileName = part.FileName;var filePath = "D:\\临时\\邮件简历\\" + Guid.NewGuid().ToString() + fileName;//File.Create(filePath)using (var stream = File.Create(filePath)){if (attachment is MessagePart rfc822){rfc822.Message.WriteTo(stream);}else{part.Content.DecodeTo(stream);}}// 保存附件到本地文件var mailFileInfo = new FileInfo(filePath);}}

完整代码

using MailKit.Net.Pop3;
using MimeKit;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Pop3EmailAttachmentsDemo
{internal class Program{static void Main(string[] args){using (var client = new Pop3Client()){// 邮箱信息string email = "csdndaolizhe@163.com";string password = "AOKRBYUISXPAITAI";// POP3 服务器和端口string pop3Server = "pop.163.com";int pop3Port = 995;// 连接到 POP3 服务器client.Connect(pop3Server, pop3Port, true);// 登录client.Authenticate(email, password);// 获取邮件数量int messageCount = client.Count;// 遍历邮件for (int i = 0; i < messageCount; i++){// 获取邮件 UIDvar uid = client.GetMessageUid(i);Console.WriteLine($"\r\n{email} \r\n接收到邮件 {uid}\r\n");// 获取邮件MimeMessage message = client.GetMessage(i);Console.WriteLine($"\r\n标题:{message.Subject} \r\n内容:{message.TextBody}\r\n");// 处理邮件附件foreach (var attachment in message.Attachments){if (attachment.IsAttachment)if (attachment is MimePart){var part = (MimePart)attachment;var fileName = part.FileName;var filePath = "D:\\临时\\邮件附件\\" + Guid.NewGuid().ToString() + fileName;//File.Create(filePath)using (var stream = File.Create(filePath)){if (attachment is MessagePart rfc822){rfc822.Message.WriteTo(stream);}else{part.Content.DecodeTo(stream);}}// 保存附件到本地文件var mailFileInfo = new FileInfo(filePath);}}// 断开连接client.Disconnect(true);}}}}
}

介绍一下POP3

POP3(Post Office Protocol 3)是一种用于电子邮件客户端和服务器之间的邮件传输的协议。它是电子邮件系统中常用的一种协议,用于从邮件服务器下载邮件到本地计算机。

特点描述
名称Post Office Protocol 3(POP3)
功能用于从邮件服务器下载邮件到本地设备。
传输方式单向传输,邮件下载到本地后从服务器上删除。
端口默认使用110号端口进行非加密通信,使用995号端口进行加密通信(SSL/TLS)。
状态保持不保留邮件在服务器上的状态,邮件的管理和状态保持通常由客户端处理。
同步不支持多设备同步,适用于那些希望在本地设备上保存邮件副本的用户。
认证用户必须通过用户名和密码进行身份验证,确保只有授权用户可以访问邮件。
安全性原始的POP3协议是不加密的,但可以通过SSL/TLS添加安全性。
流行度由于不支持多设备同步等现代需求,逐渐被更先进的协议如IMAP替代。

需要源码的留下邮箱,私信也会看,不过看的不勤,留言有通知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis核心技术与实战【学习笔记】 - 6.Redis 的统计操作处理

1.前言 在 Web 业务场景中&#xff0c;我们经常保存这样一种信息&#xff1a;一个 key 对应了一个数据集合。比如&#xff1a; 手机 APP 中的每天用户登录信息&#xff1a;一天对应一系列用户 ID。电商网站上商品的用户评论列表&#xff1a;一个商品对应了一些列的评论。用户…

【云原生之kubernetes系列】--污点与容忍

污点与容忍 污点&#xff08;taints)&#xff1a;用于node节点排斥Pod调度&#xff0c;与亲和效果相反&#xff0c;即taint的node排斥Pod的创建容忍&#xff08;toleration)&#xff1a;用于Pod容忍Node节点的污点信息&#xff0c;即node节点有污点&#xff0c;也将新的pod创建…

Ubuntu远程连接登录信息解读(ubuntu登录信息、远程登录信息)

文章目录 1. Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-100-generic aarch64)2. 三个链接是官方提供的文档、管理工具和技术支持3. System information as of Thu 01 Feb 2024 03:30:45 PM HKT4. System load: 1.16&#xff1a;系统负载指数5. Processes: 1096系统正在运…

【AI视野·今日Robot 机器人论文速览 第七十七期】Mon, 15 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 15 Jan 2024 Totally 14 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Learning Joint Space Reference Manifold for Reliable Physical Assistance Authors Amirreza Razmjoo, Tilen Brecelj, Kri…

【智能家居入门4】(FreeRTOS、MQTT服务器、MQTT协议、微信小程序)

前面已经发了智能家居入门的1、2、3了&#xff0c;在实际开发中一般都会使用到实时操作系统&#xff0c;这里就以FreeRTOS为例子&#xff0c;使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机&#xff0c;系统实时性强了很多&#xff0c;小程序下发…

Cache Lab:Part B(52.6/53分)【矩阵转置的分块算法】

目录 任务描述 32 32 baseline try1&#xff1a;给对角线上的块再次细分块 try2&#xff1a;对角块依次错位 成功&#xff1a;对角块两两交换 成功&#xff1a;其他方法 64 64 baseline 对角线优化普通块转置顺序调整&#xff08;7.6/8分&#xff09; 61 67 成…

Vue3+vite搭建基础架构(3)--- 使用dayjs

Vue3vite搭建基础架构&#xff08;3&#xff09;--- 使用dayjs 说明官方文档vite.config.js别名配置安装dayjs安装命令 使用dayjs将dayjs封装为自己的日期工具类使用dataUtil.js日期工具类示例 说明 这里记录下自己在Vue3vite的项目使用dayjs的过程&#xff0c;不使用ts语法&a…

最新XC主题 支持六种主题样式 去除域名授权全解密源码 一款多样式主题

Typecho 最新XC主题 去除域名授权全解密源码 这是一款多样式主题&#xff0c;首页支持六种主题样式&#xff0c;支持Pjax优化访问速度&#xff0c;多种单页&#xff0c;如友链、说说等。评论支持表情&#xff0c;自定义编辑器&#xff0c;支持其他样式功能。该主题功能性挺高&…

音视频数字化(音频数字化)

在音视频领域,人们始终追求无限还原现场效果,因此音频越逼真越好,视频越清晰越好。之所以我们需要将音视频信号由模拟转为数字,目的是在录制、存储、编辑、复制、回放等环节的不失真,尽量保持原有细节,不因以上操作,导致音画的质量下降。 为此,视频系统分辨率越来越高,…

【Java程序设计】【C00207】基于(JavaWeb+SSM)的宠物领养管理系统(论文+PPT)

基于&#xff08;JavaWebSSM&#xff09;的宠物领养管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的宠物领养系统 本系统分为前台系统、管理员、收养者和寄养者4个功能模块。 前台系统&#xff1a;游客打开系统…

k8s-HPA

前提条件 安装有**Metrics Server**,HPA的运行监控指标需要由Metrics Server 提供 文档&#xff1a;https://github.com/kubernetes-sigs/metrics-server?tabreadme-ov-file#readme 快速自动缩放&#xff0c;每15秒收集一次指标(可配置)。 资源效率&#xff0c;为集群中的每…

网络防御安全:2-6天笔记

第二章&#xff1a;防火墙 一、什么是防火墙 防火墙的主要职责在于&#xff1a;控制和防护。 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 二、防火墙的发展 区域&#xff1a; Trust 区域&#xff0c;该区域内网络的受信任程度高&#xff0c;通常用来定义内部…

VSCode 设置代理

Open Visual Studio Code, click the settings icon in the lower left corner, and click Settings.

yii2 mongodb 操作

->where([<>,review,""]) 不等于空 $where [newstypeid>[$in>$categoryIdArr]]; 类似mysql in操作 &#xff08;$categoryIdArr是数组&#xff09; ->where([label>[$regex >赞美诗]]) 模糊搜索操作 $where [status>1,name>[$rege…

C++语法 内存区域 和 引用

代码区 存放函数体的二进制代码 由操作系统进行管理 全局区 存放全局变量和静态变量以及常量 存放全局变量 静态变量 常量&#xff08;字符串常量 全局const常量&#xff09; 栈区 由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量等。不要返回局部…

【论文笔记】Multi-Chain Reasoning:对多思维链进行元推理

目录 写在前面1. 摘要2. 相关知识3. MCR方法3.1 生成推理链3.2 基于推理链的推理 4. 实验4.1 实验设置4.2 实验结果 5. 提及文献 写在前面 文章标题&#xff1a;Answering Questions by Meta-Reasoning over Multiple Chains of Thought论文链接&#xff1a;【1】代码链接&…

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

Git 怎么设置用户的权限

在团队协作的软件开发中&#xff0c;对于版本控制系统Git来说&#xff0c;确保代码与数据的安全性至关重要。为了实现这一目标&#xff0c;Git提供了灵活且可定制的用户权限管理机制。下面将简单的探讨一下Git如何设置用户的权限&#xff0c;以及如何保护代码和数据。 用户身份…

Nginx 多项目部署,vue刷新404 解决方案

网上找的资料大多都解决不了&#xff0c;废话不多说直接告诉你解决方法。 环境是 TP6 VUE前端官网 VUE 后台管理 部署 两个项目 刷新 404 解决方案 Nginx 配置 直接贴图 如果解决了&#xff0c;给我顶起来&#xff0c;让更多人 快速的解决。

南京观海微电子---如何减少时序报告中的逻辑延迟

1. 引言 在FPGA逻辑电路设计中&#xff0c;FPGA设计能达到的最高性能往往由以下因素决定&#xff1a; ▪ 工作时钟偏移和时钟不确定性&#xff1b; ▪ 逻辑延迟&#xff1a;在一个时钟周期内信号经过的逻辑量&#xff1b; ▪ 网络或路径延迟&#xff1a;Vivado布局布线后引…