邮件解析引擎FastMail库大功告成!
1 概述
1.1 术语
RFC:Request For Comments, 请求注解, Internet标准(草案)
MIME:Multipurpose Internet Mail Extension protocol, 多用途的网际邮件扩充协议
2 邮件解析库的实现
2.1 实现过程
下面是两个库的文件列表以及邮件解析库的类的介绍(Fast库另有文档专门介绍):
2.2 文件列表
comm./FastBase.h FAST库公共定义,包含一个完整的内存分配器类
comm./FastHashMap.h HashMap容器类
comm./FastString.h FastString字符串处理类
mime/CharsetUtils.cpp 字符串编码和解码工具
mime/MimeActivation.cpp 邮件解析初始化工具
mime/MimeContainer.cpp 邮件解析Multipart容器
mime/MimeEntity.cpp 邮件解析MIME实体类
mime/MimeMessage.cpp 邮件解析MIME邮件类
mime/MimeObject.cpp 邮件解析MIME对象类
3 邮件解析库的类
3.1 类的实现
类名 |
名称 |
说明 |
基类 |
ContentDisposition |
MIME邮件头 |
实现MIME邮件头的ContentDisposition |
|
ContentID |
MIME邮件头 |
实现MIME邮件头的ContentID |
|
ContentType |
MIME邮件头 |
实现MIME邮件头的ContentType |
|
MimeType |
MIME类型类 |
实现MIME的类型,记录在ContentType里,如text/plain |
|
ConverterFactory |
编码转换工厂类 |
用于创建编码转换对象 |
|
ICodeConverter |
编码转换接口类 |
||
Base64Converter |
BASE64编码类 |
BASE64的编码和解码 |
ICodeConverter |
QPConverter |
QP编码类 |
Quote-Printable的编码和解码 |
ICodeConverter |
hdr |
MIME邮件头类 |
实现MIME邮件头HEADER行 |
|
HeaderTokenizer |
邮件头分解类 |
实现分解MIME邮件头的各元素,如Content-Type的mimetype和各个参数。 |
|
IMimePart |
MIME邮件段体接口类 |
邮件段体类的基类 |
|
MimeBodyPart |
MIME邮件段体类 |
实现MIME邮件各个段体的类 |
IMimePart |
MimeMessage |
MIME邮件类 |
MIME邮件主类 |
IMimePart |
IMultipart |
多部分接口类 |
多部分类的基类 |
|
MimeMultipart |
多部分实现类 |
保存段体类对象的多部分容器类 |
IMultipart |
InternetAddress |
MIME邮件地址类 |
实现MIME邮件地址的类 |
|
InternetHeaders |
MIME邮件头部分类 |
实现保存MIME各邮件头的容器类 |
|
MailDateFormat |
邮件时间转换类 |
实现MIME邮件的格式的时间转换 |
|
MailDateParser |
时间分解处理类 |
实现MIME邮件格式的时间的分解 |
|
MimeInitialization |
邮件解析全局初始化类 |
实现初始化MIME邮件用到的各个全局变量 |
|
MimetypesFileTypeMap |
邮件Mime类型映射类 |
实现邮件MimeType和FileType类型的映射表,用于查询 |
|
MimeUtility |
MIME邮件分析工具类 |
实现邮件解析用到的各个解析工具函数 |
|
ParameterList |
参数列表类 |
实现ContentType和ContentDisposition用到的参数列表 |
|
SystemProperty |
系统环境类 |
实现读取系统环境参数的方法 |
|
UniqueValue |
邮件唯一值生成类 |
实现生成MIME邮件用到的唯一值的类,如boundary等 |
3.2 类图
3.3 MimeMessage类
现在介绍一下最主要的也是提供主要的调用接口API的类MimeMessage。
MimeMessage提供了一系列的方法供调用者使用,如定义了获取地址信息和获取邮件正文内容的结构(可以为具体的数据也可以为一个MimeMultipart对象),用来实现RFC822和MIME规范。
一个MimeMessage对象里保存了一个邮件内容数据(Content),以及一些记录特定的邮件地址信息(如发件人(Sender)和收件人(recipients))的属性(InternetHeaders)。还有关于这封邮件的结构信息(structural information),以及它的邮件主体(body)的段体类型(Content-Type)。
下面用图来描述一个MimeMessage对象内部可能的结构:
3.4 MimeMessage类结构图
。。。未完待续
4 参考文献
[2]《JavaMailTM API Design Specification Version 1.2》
邮件解析引擎FastMail库大功告成!相关推荐
- 邮件解析引擎FastMail库使用
1 概述 邮件解析库API完全使用面向对象技术设计,使用C++语言开发的用于邮件解析和组装的库.它提供了一些类用来解析和组装Internet邮件,如MimeMessage和MimeB ...
- 几行 Python 代码实现邮件解析,超赞~
作者 | Yunlor 来源 | CSDN博客 前言 如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究. 一.安装 通过mailgu ...
- python几行代码实现邮件解析
前言 如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究. 一.安装 通过mailgun开源的Flanker库实现邮件解析.该库包含了 ...
- 基于 Roslyn 实现一个简单的条件解析引擎
基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...
- 2021-09-11 consolidate 模板引擎整合库,Node.js 中 __dirname 和 ./ 的区别
consolidate 模板引擎整合库[适配] npm install consolidate 在工作路径的views目录下,新建1.ejs <!DOCTYPE html> <htm ...
- 赛高文字游戏解析引擎实现
赛高文字游戏解析引擎实现 一.结构组成 TGEngine 的工程目录结构如下: 其中: Base 存放 TGEngine 共用的头文件 Models 存放游戏内容的相关 Model ,分为 DSL, ...
- sdcms的模板解析引擎,一个非常简单和实用的CMS
代码 <% '============================== 'SDCMS模板解析引擎 'Author:IT平民 'Date:2009年4-5月 '================ ...
- CowNew开源-sql解析引擎和cownewsql阶段成果汇报
很多关心CowNew的朋友纷纷给我发email或者qq留言,说看到最近CowNew开源项目没有动静了,问我是不是虎头蛇尾死掉了.谢谢大家的关心,CowNew没有停止进步的步伐,最近一段时间没有动静是因 ...
- boost::program_options模块一个配置ini文件被解析程序选项库,它包括许多不同的值类型的测试程序
boost::program_options模块一个配置ini文件被解析程序选项库,它包括许多不同的值类型的测试程序 实现功能 C++实现代码 实现功能 boost::program_options模 ...
最新文章
- ASP.NET页面之间传值的方式之QueryString(个人整理)
- Ubuntu14.04 x64 zabbix 3.0 安装
- 智能车竞赛技术报告 | 智能车视觉 - 太原工业学院 - 晋速-轩辕星
- python爬虫工程师-Python-爬虫工程师-面试总结
- excel另存为没有dbf_PDF转Excel怎么做的?节省工作时间,你要学会的办公技巧
- 分布式 RPC架构简单理解
- MST(最小生成树)的构造
- 服务器建网站www无法访问,IIS6服务器搭建网站无法访问解决方案总结_DOIT.com.cn...
- 华为浏览器:即日起全面清理违规信息 严管“自媒体”账号
- 多模态之ViLBERT:双流网络,各自为王
- 纯java程序jdbcjar包放在哪_oracle 11g jdbc jar包在哪个文件目录
- Java 13 发布进入倒计时!
- Linux下安装和卸载jdk步骤详述
- SQL Server常用数据类型
- java ssm网上超市购物管理系统
- 海康VisionMaster-脚本模块
- ShinyApp中的表格:第三天笔记
- oracle lms进程 内存,lms进程耗用大量内存
- 2016【淘宝运营】,如何营销宝贝详情页,提高宝贝的转化率
- 德勤oracle offer,会计工作:刚刚拿到德勤 Offer,和大家分享一下
热门文章
- 电视剧《奋斗》精彩对白节选---(一)
- python writeline_Python文件写入函数 write()和writelines()
- 安卓面试宝典,2021最新Android知识体系总结,面试资料分享
- Python len() 函数
- 山西3件国宝春节期间亮相《国家宝藏》
- Android视频录制,保存图片,视频到本地后本地相册或者视频库里面没有的解决方案
- 给没有软件测试经验的应届生的建议,看完让你豁然开朗!
- SOLIDWORKS如何实现放样折弯
- window突然没声音.无法启动window audio.无法播放测试音调
- 微信小程序不能使用本地图片当背景图片的解决方法