基于贝叶斯算法的JavaMail垃圾邮件过滤实现
基于贝叶斯算法的垃圾邮件过滤的方法研究

基于贝叶斯算法的垃圾邮件过滤的方法研究作者:郭淑敏朱蓉王品品胡胜陈佳辉来源:《电脑知识与技术》2017年第13期摘要:随着互联网行业的迅速发展,电子邮件营销得到快速发展,但垃圾邮件的日趋严重浪费着网络资源,因此过滤垃圾邮件刻不容缓。
该文通过介绍朴素贝叶斯算法的原理及它在垃圾邮件过滤这方面的应用,基于朴素贝叶斯算法的分类模型设计了一个文本广告邮件过滤系统,能够有效实现垃圾邮件过滤。
该系统的特点是在中文分词部分添加了当前的网络热词,从而进一步提高了系统的实用性。
本系统通过在包含合法邮件与垃圾邮件的数据库上进行实验测试,针对垃圾邮件的分类获得了较高的正确率。
关键词:垃圾邮件;贝叶斯算法;过滤器中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)13-0171-03伴随着互联网时代的到来,利用科学技术传递消息的方式多种多样,电话、QQ、电子邮件、微信、微博等都成了人们日常生活中不可缺少的交流平台。
与之诞生的还有相应的电子营销手段,如今人们发送电子邮件取代传统邮件,成为一些电商进行宣传和推广产品的重要手段,但与此同时来势汹汹的垃圾邮件使得整个网络不堪重负。
面对垃圾邮件的猖獗,技术人员开发各种阻止垃圾邮件的方法。
例如:黑名单技术,它将经常发送垃圾的IP地址范围、域名等属性都列入一个黑名单,凡是从黑名单所包含的IP地址发送来的邮件都被判定为垃圾邮件,但这种方法也会误屏蔽IP地址,导致正常的通信无法进行。
另一种技术就是过滤技术,它根据某种算法或规则,来判断垃圾邮件,最先出现的是基于模式匹配的算法规则,它通过关键词检索来判断垃圾邮件,然后是支持正则表达式的模糊匹配。
随着信息技术的发展,基于分类算法的过滤成为现在最流行的技术,其中:基于贝叶斯算法的分类能够获得良好的垃圾邮件过滤效果受到广泛研究者的关注。
这种方法用先验概率对邮件进行判断,并且可以在分类算法中添加自学功能,通过不断地校正先验概率来提高垃圾邮件过滤的准确性。
基于贝叶斯算法在垃圾邮件过滤方法研究和改进

基于贝叶斯算法在垃圾邮件过滤方法研究和改进摘要:本文在对贝叶斯公式更进一步的了解研究后,使用实验的方式进一步的了解到该方法的缺点并进行分析。
并在贝叶斯公式的基础上进行改进,使其更加准确的应用在垃圾邮件过滤方法中。
依据最小风险的传统方法进行的改进,用实验的方法进一步得到准确的结论。
改进的方法更加适用于现代邮件的需求,更加个性化。
关键词:贝叶斯定理;多项式事件模型;多变量贝努利事件模型;最小风险;垃圾邮件过滤1 引言在这个高速发展的时代,科技化已经大势所趋,消息的传播已经从之前的手写信件全面过渡到网络邮件,人们越来越习惯用邮件的方式来传递消息。
但是万物皆有双面性,邮件带给我们方便的同时也使得垃圾邮件越来越泛滥。
垃圾邮件不仅会占用人们的时间,里面的内容也会对人们造成一定的威胁,电子邮件所带来的负面影响是不可逆的。
电子邮件因其便捷、快速、传播性广,里面会夹杂着一些推销广告、不良信息、甚至一些病毒链接,给许多用户带来不便。
目前基于垃圾邮件的过滤方法主要有基于IP、行为、内容三种过滤技术,其中以基于内容的经常使用,文本本就是以词构成的一个整体,基于内容的过滤技术更加的准确。
基于内容的过滤技术中,朴素贝叶斯算法因其能够满足用户个性化的要求,在垃圾邮件的过滤方法中受到广泛应用。
本文在更加精确的了解贝叶斯算法在垃圾邮件过滤的应用效果后,更加有针对性的提出该方法的弊端并进行适当的分析和改进,并进行相应的实验,作出最后的结论。
2 贝叶斯过滤器2.1 贝叶斯定理贝叶斯定理最早是由英国数学家贝叶斯(1702-1761)提出的,最早收录于《机会学说中一个问题的解》。
该定理是贝叶斯用来解释两个随机条件概率之间的关系而提出的。
多变量贝努利事件模型由于并没有考虑词频问题,相对简化了过滤方法,提高了效率,在不同的文本中可以采用不同的方法。
2.3贝叶斯算法的缺陷分析贝叶斯算法起初应用于数学概论中,但随着数学的发展,这种方法越来越广泛的应用于文本分类领域,它的灵活性,简便性以及较高的精确度,使得它越来越不可或缺。
基于贝叶斯分类的垃圾邮件过滤系统

基于贝叶斯分类的垃圾邮件过滤系统随着互联网的发展,每天都会有数以万计的电子邮件发送到全球各地的收件箱中。
但是,不幸的是,在这些邮件中,许多都是无关紧要的垃圾邮件。
这些邮件浪费了我们的时间,占据了我们的空间,甚至可能包含有害的信息。
所以垃圾邮件过滤已成为电子邮件系统中必不可少的一部分。
在这个领域,贝叶斯分类算法的应用已可以实现较高的垃圾邮件检测率,因而被广泛采用。
本篇文章将从以下几个方面探讨基于贝叶斯分类的垃圾邮件过滤系统。
1. 贝叶斯分类算法在介绍贝叶斯分类算法之前,我们需要先了解以下一些概念。
- 条件概率条件概率是指在一个事件发生的前提下,另一个事件发生的概率。
例如:在一个班级中,学生身高在1.7米以上的比例为30%,而其中女生的比例为50%,那么在身高在1.7米以上的学生中,女生的比例为50%÷30%=1.67倍。
- 先验概率先验概率是指未进行任何新实验或观察,仅根据已知的信息,得出的概率。
例如:某城市出租车司机中男性占比80%,女性占比20%,则在没有任何其他信息的情况下,任意一位出租车司机是男性的概率为80%。
- 后验概率后验概率是指通过新的实验或观察之后,得出的概率。
例如:通过调查发现,在某家餐馆就餐的顾客中,男性占比50%,女性占比50%,并且男性消费金额的平均值为30元,女性消费金额的平均值为20元。
现在,如果一个顾客消费了40元,那么他是男性的概率是多少呢?- 贝叶斯定理贝叶斯定理是利用已知的先验概率和条件概率得出后验概率的公式。
在垃圾邮件过滤的场景中,我们可以将邮件分类为两类:垃圾邮件和非垃圾邮件。
对于每封邮件,我们可以将它看作是由一些特征组成的,如邮件的主题、内容、发件人、附件等。
对于每个特征,我们可以计算出在垃圾邮件中出现的概率和在非垃圾邮件中出现的概率,这些概率被称为条件概率。
同时,我们可以根据历史数据计算出垃圾邮件的先验概率和非垃圾邮件的先验概率。
这样就可以利用贝叶斯定理计算出一个邮件是垃圾邮件的后验概率。
基于贝叶斯算法的垃圾邮件过滤技术综述

继续教育学院毕业论文题目:基于贝叶斯算法的垃圾邮件过滤技术综述学生姓名:李达夫学号:092028010027班级: CMU3097专业:指导教师:邹政2011 年10 月基于贝叶斯算法的垃圾邮件过滤技术综述摘要现在电子邮件成为一种快捷、成本少的通信技术手段,很大地方便了人们的通信与交流。
但是,垃圾邮件的产生,影响了电子邮件的正常通信,占用的传输带宽,并对系统安全造成了很大的威胁。
因此,反垃圾邮件的研究问题已经成为具有重大现实意义的全球性的课题。
目前,对付垃圾邮件的主要方法和手段是通过反垃圾邮件立法和使用邮件过滤技术进行处理,现已经相继出现了多种邮件过滤技术。
常用的包括黑/白名单技术、基于内容的分析方法以及基于规则的方法等。
基于内容分析的技术正逐步进入邮件过滤技术当中,并且成为当前研究的热点,其中,基于内容分析的邮件过滤方法中的典型方法是基于贝叶斯算法的垃圾邮件过滤模型。
本论文对中文垃圾邮件的特点进行了比较系统的分析和研究,结合贝叶斯(Bayes)理论,构造基于贝叶斯分类的垃圾邮件过滤模型,在特征提取方面,采用互信息值的方法,在分类方法上,引入了适合本文的分类方法,并采用了一种更加适合于贝叶斯计算的表示方法。
关键词:电子邮件;垃圾邮件;邮件过滤;贝叶斯理论目录第一章绪论 (5)1.1 引言 (5)1.2 垃圾邮件的定义及其危害 (5)1.2.1 垃圾邮件定义 (5)1.2.2 垃圾邮件危害 (6)1.3 国内外反垃圾邮件现状 (7)1.4 研究目标与内容 (8)第二章垃圾邮件技术 (9)2.1.1 电子邮件的概述 (9)2.1.2 电子邮件的格式 (9)2.1.3 邮件传送过程 (9)2.3.1客户端垃圾邮件过滤技术 (11)第三章基于标准邮件集构造垃圾邮件分类向量 (16)3.1标准邮件集 (16)3.1.1标准邮件集的背景 (16)3.1.2垃圾邮件和正常邮件的收集 (16)3.1.3标准邮件集的概述 (17)3.2基于标准邮件集的垃圾邮件分类向量 (17)3.2.1分类的实现 (17)3.2.2 提取分类向量的过程 (18)3.3基于贝叶斯原理的过滤系统的实现 (20)3.4算法的实现 (20)第四章实验结果及分析 (23)4.1基于贝叶斯算法的过滤系统实验环境 (23)4.2基于贝叶斯算法的过滤系统总体结构图 (24)4.3实验结果及性能分析 (24)第五章总结与展望 (27)5.1论文总结 (27)5.2待改进的问题 (28)参考文献 (29)第一章绪论1.1 引言伴随着电子邮件的迅速普及,越来越多的人使用电子邮件。
基于贝叶斯算法分类的反垃圾邮件系统的实现

伴 随着 电子邮件的迅速普及 , 越来越多 的人群使用 电子邮件 。然 而 , 电子 邮件在 为人们 提供方便的同时也成 为垃圾 邮件 、 病毒 、 意程 序或敏 恶 感 内容 邮件 传播的重要载体 , 对系统安全造 成了严重 的威 胁 。近几年来 , 垃圾 邮件的泛滥是 由于专 门发送垃 圾邮件的服务器大批 涌现 。由于 网络 的开放 陛, 邮件成 为互联网上的— 个 日 严重的全球 性安全 问题 , 垃圾 益 越 来越得 到社 会大众和研究人员 的重 视和关注。 因此 , 针对这一 问题尽快寻 找解决 方案的需求也更加迫切 。 1垃圾邮件的定 义及其 危害 20 0 3年 , 中国互联 网协 会在 《 中国互联网协会反垃圾 邮件规范 》 中对 垃圾 邮件作 了以下定 义 :收件 人事先 没有 提出要 求或 者同 意接 收 的广 告 、 刊物 、 电子 各种形式 的宣传品等 宣传 l的 电子 邮件 ; 生 收件 人无法拒 收 的电子邮件 ;隐藏 发件人身份 、 、 题等信息 的电子邮件 ;含有虚假 地址 标 的信 息源 、 发件人 、 由等 信息的电子邮件 。 路 垃圾 邮件 的泛 滥给 人们带 来的危 害和损 失 主要 体 现在 以下 几个方 面 : 邮件给 网络运 营商 ( P造成 了严 重的损失 。大量 的垃圾 邮件 在 垃圾 I ) S 网络上传播 , 占用了 网络带宽 , 网络通信 质量下 降 , 是网络发 生 导致 甚至 拥塞 , 邮件 系统 的正常运行 ; 干扰 垃圾 邮件 侵害 了用户 的隐私权 ; 垃圾 邮 件给 网络带来 了各种 安全性的问题 ; 垃圾邮件成 了计算 机病毒新 的 、 快速 的传播途径 。 2基于垃圾邮件特征 向量判断垃圾 邮件算 法的设计
为:
P C D=∑ P W I (M r z
基于朴素贝叶斯算法的垃圾邮件过滤原理

基于朴素贝叶斯算法的垃圾邮件过滤原理随着互联网的普及和电子邮件的广泛应用,垃圾邮件问题也日益严重。
垃圾邮件不仅浪费用户的时间和网络资源,还可能包含恶意链接和病毒,对用户的安全造成威胁。
为了解决这一问题,人们提出了各种垃圾邮件过滤方法,其中基于朴素贝叶斯算法的垃圾邮件过滤是一种常用且有效的方法。
朴素贝叶斯算法是一种基于概率统计的分类算法,它假设特征之间相互独立,且每个特征对分类结果的影响是相互独立的。
在垃圾邮件过滤中,我们可以将每个邮件看作一个文档,将文档中的每个词语作为特征,然后通过计算每个词语在垃圾邮件和非垃圾邮件中出现的概率,来判断一封邮件是垃圾邮件的概率。
具体来说,基于朴素贝叶斯算法的垃圾邮件过滤可以分为以下几个步骤:1. 数据预处理:首先,我们需要对训练集进行预处理,包括去除邮件中的HTML标签、特殊字符和数字,将文本转换为小写,并去除停用词等。
这样可以减少特征的维度,提高分类的准确性。
2. 特征提取:接下来,我们需要从预处理后的训练集中提取特征。
常用的特征提取方法有词袋模型和TF-IDF模型。
词袋模型将每个词语作为一个特征,统计每个词语在文档中出现的次数;TF-IDF模型则考虑了词语在整个语料库中的重要性,通过计算词语的词频和逆文档频率来提取特征。
3. 计算概率:在特征提取完成后,我们需要计算每个特征在垃圾邮件和非垃圾邮件中出现的概率。
对于每个特征,我们可以计算其在垃圾邮件中出现的概率P(feature|spam)和在非垃圾邮件中出现的概率P(feature|non-spam)。
这可以通过统计训练集中每个特征在垃圾邮件和非垃圾邮件中的出现次数来计算。
4. 计算后验概率:在计算了每个特征的概率后,我们可以使用贝叶斯定理来计算一封邮件是垃圾邮件的概率。
对于一封新的邮件,我们可以计算其属于垃圾邮件的概率P(spam|email)和属于非垃圾邮件的概率P(non-spam|email),然后比较这两个概率的大小来进行分类。
基于贝叶斯的垃圾邮件过滤算法设计研究

响,但中文文本中切分精度对于邮件过滤系统
来 说 并 不 是 很 重 要 ,在 这 里 ,过 滤 准 确 率 与 效
率才是系统的最关键性指标,需优先考虑其实
时性与准确率要求;其次,特征提取,即删除
一
参考文献
[ 1 ]梁志 文 , 杨 金 民 ,李元 旗 等 . 基 于 多项
式模 型 和 低 风 险 的 贝 叶 斯 垃 圾 邮件 过
邮件 是 “ 疑 似 垃圾 邮件 ”,若 0 . 8 P( C 2 ) l 1 ,则表示新邮件是 “ 垃圾邮件”。
4 实 验 结 果
通过 本次 实验 可知 ,所选 取 的 3 0 0封 已 知样本邮件中,垃圾邮件 有 2 5 0封 ,而合法 邮 件则 由 5 0封 。而为 了分析 改进后 的贝叶斯算 法组所具有的 自我学习能力高低 ,研 究中不采 用训练样本,而是直接将 邮件用 于相关 的测试
滤算法 【 J 】 .中 南 大 学 学报 (自然 科 学
版 ), 2 0 1 3 , 4 4 ( 7 ) : 2 7 8 7 - 2 7 9 2 .
[ 2 】李茹 ,刘培玉 , 朱振方等 . 基于 A d a B o o s t
本次研究还发现,算法在 邮件的过 滤中表 现出 较好的查准率与查全率,而 这也就 说明了该系 统的 邮件过滤性能是比较好的。 综上 所述 ,基于 认知 学习 的贝叶 斯算法 作为一种新型的邮件过滤算法,有着较 好的 自 学能力与学 习效果 ,且在邮件过滤性能中表现 出良好的动态调整能力,查全率与查准率都较 高,以获得较好 的邮件过滤效果 。
网络天地 ・ N e t wo r k Wo r l d
Hale Waihona Puke 基于贝叶斯 的垃圾 邮件过滤算法设计研究
基于贝叶斯方法的一种垃圾邮件过滤的实现

基于贝叶斯方法的一种垃圾邮件过滤的实现
闫龙;王文杰
【期刊名称】《微电子学与计算机》
【年(卷),期】2006(23)2
【摘要】随着Internet的迅速发展,电子邮件的应用变得十分广泛,但是许多无用、有害的信息也随之而来。
文章通过对垃圾邮件的分析与处理,运用贝叶斯方法建立
一个自适应性又能够个性化的自动邮件过滤系统。
该系统可以较为容易地识别出垃圾邮件,降低误判率。
【总页数】3页(P86-88)
【关键词】贝叶斯方法;反垃圾邮件系统;垃圾邮件
【作者】闫龙;王文杰
【作者单位】中国科学院研究生院
【正文语种】中文
【中图分类】TP3
【相关文献】
1.终端过滤垃圾邮件--设计并实现基于SpamAssasin的反垃圾邮件客户端 [J], 孙彬;孙东红
2.基于贝叶斯方法的垃圾邮件过滤技术综述 [J], 张志瑛
3.一种基于规则的垃圾邮件过滤算法实现 [J], 宋智洋
4.一种基于贝叶斯理论实现垃圾邮件过滤的方法 [J], 庞雅静; 朱金钧
5.一种基于贝叶斯理论实现垃圾邮件过滤的方法 [J], 庞雅静;朱金钧
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于贝叶斯算法的JavaMail垃圾邮件过滤实现刘岚,贾跃伟武汉理工大学信息工程学院,武汉(430070)E-mail: simon_jia_2005@摘要:JavaMail 在中小型企业的邮件系统中有着广泛的应用,谨以贝叶斯算法为基础,提出并实现一套简单,高效的自适应垃圾邮件的过滤方案。
它采用基于词熵的特征提取方法,在过滤的过程中不断的进行自学习,具有较强的自适应能力,最终通过阈值来判别邮件是否为垃圾邮件。
关键词:JavaMail;贝叶斯算法;垃圾邮件;自学习1.引言JavaMail是Sun发布的处理电子邮件的应用程序接口,预置了常用的邮件传送协议(如SMTP、POP、IMAP、NNTP)的实现方法,与JSP和QMAIL 结合开发出稳定可靠的企业级web mail系统,可以满足中小型企业的日常办公需求。
但目前这种办公邮箱最大的困扰是来自internet的大量以广告为目的垃圾邮件,尤其是在网站上对外公布的邮箱,其垃圾邮件的比例甚至达到了90%以上,日平均有20封以上的垃圾邮件,对邮箱使用造成了很大的不便,这是邮箱系统的开发和维护首要解决的问题。
2.反垃圾邮件过滤技术2.1 基于黑白名单的过滤技术此技术使用最早也最为常用,即是对于地址在白名单的服务器的邮件全部接收,对地址在黑名单的服务器的邮件全部拒收,国际和国内的一些反垃圾邮件组织会实时更新和提供一种实时的黑名单(Real Time Black List)的邮件服务器IP数据库,简称RBL,任何邮件服务器都可以订阅RBL以达到过滤垃圾邮件的目的[1]。
但这种方法缺点很也很明显:处理陌生邮件无能为力;需要不断更新和维护;效率不高容易误判。
2.2 基于加密信息的过滤技术加密信息过滤技术主要是采用类似于公钥密码的一类方法,主要目的是对邮件发送者进行验证,防止目前泛滥的伪造域名和木马发送,域名密钥体制利用公钥技术和DNS构建一个域名层次的电子邮件来源和内容认证框架,简单的讲,即为发送邮件时候同时产生密钥和公钥,密钥跟随邮件,收件服务器从密钥中获取签名和域名,然后通过网络公钥验证通过后完成邮件的发送。
此种方法的缺点也显而易见,即使得邮件的网络传递负担加重,同时缺乏大规模的认证标准,使得目前阶段难以大范围的推广。
2.3 基于规则和统计的过滤技术规则是指预设垃圾邮件关键词进行的邮件过滤,而其最大的缺点是实效性较差,不易维护,垃圾邮件往往通过关键词中增加特殊符号来躲避规则,同时也会使过滤缺乏弹性。
而贝叶斯过滤算法是一种典型的基于统计的垃圾邮件过滤技术,这种理论的基础是通过对大量垃圾邮件的常见关键词进行分析后得出其分布的统计模型,并由此推算目标是垃圾邮件的概率,再根据所设阈值来判断是否接受邮件,它最大的特点是自学习功能,不断的自我更新过滤规则,保证了不需维护即可获得长期稳定的过滤效率。
但贝叶斯算法其缺点也同样明显,它同时需要一定量的垃圾邮件数据库完成初始自学习过程,同时需要用来匹配的大量的汉字和英文单词样本库,而且对于基于JavaMail 中小型规模的企业邮件服务器,其初始大量的自学习过程所耗费的系统资源是办公环境无法忍受的,基于此,本文将结合规则过滤的优点,将两个种方法进行互补的整合,在初始预设一定规则的情况下,由贝叶斯算法所实现的模块完成对垃圾邮件的判断并且不断的通过自学习功能对规则进行完善和修改,以达到自我维护的目的。
3. 贝叶斯过滤算法推理根据贝叶斯公式[5]:1(|)()(|)(|)()i i j jj P A B P B P B A P A B P B ==∑把两种邮件看作是两个随机事件A 、B ,其中A 为垃圾邮件,B 为正常邮件,是全部自学习E 的样本空间S 的全部随机事件。
T 为邮件单词的集合,其中i T 为T 的元素。
根据贝叶斯公示有:(|)*()(|)(|)*()(|)*()i i i i P T A P A P A T P T A P A P T B P B =+ 而样本空间中垃圾邮件的数量与正常邮件相当,故()()0.5P A P B ==,又令()(|)A i i f T P T A =、()(|)B i i f T P T B =,由此推导出由一个单词的出现的情况下,判断邮件是否为垃圾邮件的概率:()(|)()()A i i A iB i f T P A T f T f T =+ (公式3.1) 当拒收关键词列表学习完毕,在多关键词过滤的情况下,由合并概率公式(Combining Probabilities )可得:1211211(|)*(|)*.....(|)(|,...,)[(|)*(|)*.....(|)][(1(|))*(1(|))*......(1(|))]n n n n n P A T P A T P A T P A T T P A T P A T P A T P A T P A T P A T −=+−−− (公式3.2) 由此,我们很容易算出所收到邮件时垃圾邮件的概率,再根据所设阈值判定是否为垃圾邮件。
4. 本算法实现的JavaMail 环境本次是实现的贝叶斯算法的JavaMail 系统逻辑架构如下图所示:图1 JavaMail服务器系统架构图但由于是中小企业级邮件系统,数据库服务器没有专门配置,而是将邮件,和配置文件数据一起存放在应用服务器上,邮件文件存放在根目录下的domain文件夹中。
5.贝叶斯过滤算法的java实现贝叶斯过滤算法在企业应用的邮件系统的具体实现中,会遇到以下几个关键问题:关键字表单等数据的存储问题;邮件箱中大量邮件的读取;收邮件的同时邮件内容解码分析的问题;对邮件内容进行关键词的遍历比较并进行自学习。
下面便分别实现上述功能:5.1 关键字表单数据的存储问题由于本系统是中小型企业的邮件服务器,所以并未使用大型的数据库如:oracle等,而是采用xml文件的形式进行数据的存储,它的优点是系统架构简单,便于修改和维护[3]。
import org.dom4j.document;import org.dom4j.Element;import org.dom4j.Element;//完成对xml文件的操作需要org.dom4j 的开发包this.m_FileName = pPath + "/" + Domain + "/" + Name + "/Config.xml" ;doc = DocumentHelper.parseText("<root/>");OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出format.setEncoding("GBK"); //指定XML编码writer = new XMLWriter(new FileWriter(new File(pFileName)), format);El =Root.addElement("Filter"); //增加“Filter”的节点El.setText("");// 完成对xml文件的创建El = (Element)doc.selectSingleNode("root/Filter");this.Filter = El.getText();//完成对xml文件的读取5.2 邮箱中大量邮件的读取由本文第四部分可知,本系统的邮件文件的存储是放在根目录下的文件夹中。
import java.io.FileInputStream;File f = new File(BoxDir); File[] files = f.listFiles();// BoxDir 为邮件所存放文件夹的路径,如:“/maildir/inbox”for (int i = files.length-1; i >= 0; i--) {FileInputStream in = new FileInputStream(files[i]);}//这样变利用java.io的fileinputStream将所有邮件从文件夹中循环的读入内存5.3 收邮件并对邮件内容进行解码分析由于邮件发送是根据SMTP(Simple Mail Transfer Protocol)协议,而smtp服务器只能接受7bit字节流,所以要根据MIME(Multipurpose Internet Mail Extensions)协议将邮件内容进行编码,所以再解码端也要对应的将信件内容的格式作出判断,如图1:图 2 MIME解码过程示意图import javax.mail.* ;Store store = mailsession.getStore("pop3");store.connect(pop3Server, userName, password); //利用pop3协议和账户,密码连接服务器Folder folder = store.getFolder("INBOX");folder.open(Folder.READ_WRITE); //打开收件箱文件夹Message message[] = folder.getMessages();//通过以上几个步骤,已经把邮件从服务器中收到系统中。
for (int i = 0; i < message.length; i++){ String ContentString = new String();Object object = message[i].getContent(); //获得邮件内容if ( message[i].isMimeType("text/plain")|| message[i].isMimeType("text/html")){ ContentString=" "+(String)object+" ";} //判断是否为“text/html”if ( message[i].isMimeType("multipart/*")){ Multipart mp = (Multipart)object; //判断是否为 “Multipart”for (int j = 0; j < mp.getCount(); j++) {ContentString =ContentString+"\t"+ mp.getContent (); //将所有邮件内容放入一个字符串 }//邮件内容分析完毕5.4 根据规则对邮件样本进行遍历自学习由第2节可知,鉴于实用资源和效率的考虑,本模块将预设一定的规则。