Email分析技术的研究与实现毕业设计论文.doc

上传人:laozhun 文档编号:3931598 上传时间:2023-03-28 格式:DOC 页数:48 大小:360.50KB
返回 下载 相关 举报
Email分析技术的研究与实现毕业设计论文.doc_第1页
第1页 / 共48页
Email分析技术的研究与实现毕业设计论文.doc_第2页
第2页 / 共48页
Email分析技术的研究与实现毕业设计论文.doc_第3页
第3页 / 共48页
Email分析技术的研究与实现毕业设计论文.doc_第4页
第4页 / 共48页
Email分析技术的研究与实现毕业设计论文.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Email分析技术的研究与实现毕业设计论文.doc》由会员分享,可在线阅读,更多相关《Email分析技术的研究与实现毕业设计论文.doc(48页珍藏版)》请在三一办公上搜索。

1、本科毕业论文题 目Email分析技术的研究与实现学 院专 业班 级学 号学生姓名指导教师完成日期摘 要随着互联网的迅猛发展,Email日益成为我们日常生活中信息交流的主要方式,正是由于这一特点使得大量恶意Email与垃圾Email的存在,如何有效管理Email成为目前的主要问题之一。本文介绍了一个基于Jmail的Email分析管理系统的设计与实现。主要完成的功能有对于恶意邮件的屏蔽与删除、自定义恶意邮件;根据邮件的属性对服务器中的邮件进行了自动分组管理方便用户查看。恶意邮件处理的核心是根据关键字技术的,邮件分析系统在接收到邮件服务器(如SMTP)上的客户邮件之后并不马上提交给用户,而是先根据恶

2、意Email的根据关键字进行查找,列出一个初步判定为恶意Email的列表由用户来进行管理,用户可以对恶意邮件进行删除、忽略等操作以提高系统的可靠性。考虑到邮件本身固有的属性与常用邮件软件如outlook、foxmail等在邮件分组中的表现形式,本系统在处理邮件自动分组时根据邮件服务器中邮件的基本属性,采用代码动态生成邮件的两种邮件分组:按时间分组及按好友分组。通过这两种方式,用户可以方便地查阅和管理这些Email。 关键词:Email;恶意邮件;关键词查找;自动分组AbstractWith the rapid development of internet,the Email becomes

3、the main way of information exchanges in our daily life day by day, formal because this characteristics make a great deal of malice Email and the existence of the garbage Email, how effectively manage Email to become one of the current key problems.Carries on checking to seek according to the key wo

4、rd while handle malice Email of and list the credibility that the row form that first step judges to do evil idea Email is carried on a management by customer to raise system.Adopted two kinds of cents set method while handle the mail automatic grouped: On time cent set and press the friend grouped.

5、 Pass these two kinds of method, the customer can expediently check with manage these Emails.Key Words: Email; malice email; keywords searching; auto grouping目 录1 绪论11.1 课题背景11.2 Email分析技术的研究现状11.3 本文主要研究内容32.开发平台及工具简介42.1 Visual C+简介:42.2 ADO技术52.3 SQL语句简介53 需求分析与总体设计73.1系统需求分析73.2 系统功能模块图73.3 系统目标

6、84. 具体实现94.1 数据库的创建94.2 MFC连接数据库94.3 Email收取并解析124.4 恶意Email处理184.4.1恶意Email分析184.4.2恶意Email的删除224.4.3恶意Email的忽略244.4.4恶意关键字的添加254.5 Email自动分组264.5.1按时间进行分组274.5.2 按好友进行分组324.5.2 添加好友信息355. 程序调试376. 结论与展望38参考文献39致 谢401 绪论1.1 课题背景自从互联网开始发展到现在,互联网已经成为经济、社会、文化、教育以及娱乐等不可缺少的一部分,其中Email与我们的日常工作生活和学习中越来越重要

7、。 Email的出现使得收发信的速度得到看空前的提高,用传统的方式收发信件通常需要数天,而通过Email收发信件往往只需要数秒,Email已经成为人们联系沟通的重要手段,给人们带来了便利。但是Email使用者在使用Email时随着时间的推移,收件箱中的邮件会越来越多,当使用者需要查阅某个Email时,需要在查找上浪费很多时间。这造成了邮件管理上的困难。除了使用Email在邮件管理上存在的问题外还存在很多问题:如,目前大部分的Email是免费的,通过Email收发信件不仅有速度快的优点,还有发信方不需支付额外费用的特点。正式因为Email具有的这些特点给我们带来了很多烦恼:垃圾邮件成为邮件中的主

8、流,垃圾邮件像瘟疫一样蔓延,污染网络环境,占用大量传输、存储和运算资源,影响了网络的正常运行。业内人士分析:一旦垃圾邮件占到互联网总数据流量的三分之一以上,将会造成巨大的存储需求,甚至对信息安全系统的有效性构成威胁。除了垃圾邮件以外还有恶意邮件和广告邮件。通过邮件攻击现象越来越多,破坏力也越来越强,超过80%的网络入侵者均以破坏电子邮件系统为主要目标,对网络的信息安全造成了严重的威胁。如病毒侵犯、邮件爆炸、邮件被监听等安全隐患越来越严重,因此电子邮件安全问题也越来越得到使用者的重视。在Email具有上述能够给我们带来便利但也有烦恼的特点,如何有效利用Email来提高我们的工作效率,为我们的日常

9、生活提供极大的便利等逐渐成为人们关注的焦点,这就迫切需要一个好的Email管理系统来管理我们的邮件。而Email管理系统是建立在Email的分析之上的。本文正是研究Email分析技术的研究与实现。1.2 Email分析技术的研究现状电子邮件系统经过几十年的发展,已经形成了完善的技术体系。邮件服务器系统在保留了电子邮件系统最初的收发邮件、邮件存储等基本功能的同时,融入了最新的计算机与网络技术,使电子邮件系统有了全新的改观。邮件技术的发展趋势如下:(1) Web邮件技术。随着中国Internet应用的日益普及和逐步深入,这些数字仍在不断增长。但是对于电子邮件系统来说,单纯使用邮件客户端程序进行邮件

10、的收发已经不能满足用户移动办公的需要。Web邮件技术的出现,彻底解决了用户办公的需要,使得邮件用户可以在任何地方使用浏览器登录邮件服务器收发邮件,而不用配置邮件客户端程序。(2) 多域邮件服务。所谓多域邮件服务,即是一台物理服务器为多个独立注册Internet域名的企业或单位提供电子邮件的服务,在逻辑上,这些企业和单位拥有自己独立的邮件服务器,也可以称为虚拟邮件服务器技术。对于ISP提供商和企业集团公司来说,多域邮件服务器的支持能力是选择邮件服务器的一个重要考虑因素。它可以方便地扩展其横向邮件服务能力。(3) 安全防护。现在的邮件服务器在安全防护技术上有了较大的提高,包括数据身份认证、传输加密

11、、垃圾邮件过滤、邮件病毒过滤、安全审计等的多项安全技术在邮件服务器中都得到了很好的应用。(4) 多语言(5) 远程监控和性能调整(6) 无限的可扩展能力反垃圾邮件技术主要包括:垃圾邮件过滤技术、邮件服务器的安全管理和培植技术以及对简单邮件通信协议(SMTP)的改进研究等。对过滤技术的应用和研究在推进和发展阶段主要集中在三个方面:(1) 利用热顶地址、IP或域名“黑白名单”进行的邮件限制或过滤,典型应用诸如:结合DNS的实时黑名单(RBL)过滤,用户自定义邮件白通道加严整的过滤方法等。(2) 基于数据挖掘技术进行的邮件过滤研究,利用文本分类与统计算法进行垃圾邮件检测,比较有代表性的是贝叶斯过滤器

12、。它是以自学习、自适应和极高的准确率占据了过滤器这个领域的主导地位。其他研究包括:基于记忆信息、基于事件特征描述信息进行数据挖掘的垃圾邮件检测方法。(3) 基于垃圾邮件的特征分析、规则提取的规则匹配过滤方法,对这种技术的应用,SpamAssassin是个中翘楚。在电子邮件技术越来越成熟的今天,国内外还是在不断的对其进行着分析研究与实现,力使其做到最完美,使恶意邮件无所遁形,功能更强大,便捷,更大众化。在国内,如网易,新浪,搜狐等大型网站都有为我们提供免费的邮箱;在国外,例如HOTMAIL,YAHOO等网站都有此功能。从表面看,无论使用境内还是境外的电子邮箱,除了网站品牌的不同,好象并没有太大的

13、区别,国内外各大网站提供的服务在功能和技术上也确实比较类似,但是,业内专家指出,网民使用境外电子邮箱,往往要承担一定的潜在风险。1.3 本文主要研究内容本文主要研究从邮件服务器(如)上收取邮件,将收取到的邮件列表显示出来,当点击邮件列表上的某一封邮件时能够在相应的地方显示出该邮件的正文,该部分是完成一个邮件解析接收的过程。在收取到所有邮件之后,接下来要做的工作就主要分为两块:邮件的自动分组及恶意邮件的发现。2 开发平台及工具简介2.1 Visual C+简介:几乎所有世界级的软件,从业界领先的Web浏览器到面向任务的企业应用,都是使用Microsoft Visual C+开发系统来开发的。要用

14、C+来开发Windows和Web上的高性能应用程序,Visual C+是效率最高的首选工具。Visual C+ 6.0在不牺牲灵活性、性能和控制力度的同时,给C+带来更高水平的生产效率。除了IntelliSense Technology(智能感应技术)和Edit and Continue(即编即调)等显著缩短开发时间的新特性外,Visual C+ 6.0还为Web开发和企业开发提供更良好的支持。Microsoft Visual C+ 6.0专业版的健壮的构件开发、强大的数据库工具和完备的Internet支持将使您从中受益,创建出策略性的商务解决方案来。Visual Studio C+6.0采用

15、一种非常巧妙的方法将原本非常复杂的Windows编程步骤封装起来,使编程人员可以轻松容易地编写Windows应用程序。Visual C+6.0是Microsoft Visual Studio6.0的一个子集,他对低版本开发程序兼容。它有如下的特点:(1) Visual C+6.0提供了用于开发Windows环境下的应用程序和简捷、快速的开发环境。利用Visual C+6.0开发Windows应用程序具有很高的效率。(2) Visual C+6.0提供了MFC类,开发者只需要做少量的工作就可以得到功能齐全的Windows应用程序。与使用C和Windows SDK开发Windows应用程序相比,使

16、用Visual C+6.0建立一个完美的Windows应用程序所花费的时间要少得多。(3) Visual C+6.0还提供了一个高度集成的工具集,使得在开发应用程序的全过程中都保证了较高的效率。集成化便于程序开发,开发者可以同时在编辑、建立、调试等不同任务之间快速切换,甚至可以同时进行。(4) 调试方便:在程序调试时,在遇到编译错误时,会在输出窗口显示出错误类型、行号及错误提示等信息。在输出窗口中双击错误提示时,光标会自动指向出现错误的代码所在行应方便快速找出错误。Visual C+支持断点调试,同时也可以在调试窗口观察有关变量的值,以方便查找出有关的逻辑错误。2.2 ADO技术(1) ADO

17、的技术特点 ADO的全称是ActiveX Data Object,它是微软公司为数据库应用程序开发的新接口。ADO基于COM,提供编程语言可利用的对象,它不仅面向Visual C+,同时还提供面向其他开发工具的应用,如Visual Basic、VJ等,甚至还提供面向诸如 VBScript、JavaScript等脚本语言的应用。ADO的底层是OLE DB,不仅能访问关系数据库,也能访问非关系型数据库。ADO对OLE DB的包装是相当成功的,相对于OLE DB中众多的接口来说,ADO对象模型简明扼要,没有一点多余的东西,并且其功能还要比DAO强大的多。并且可以说到目前为止,ADO是目前最快的数据库

18、访问的中间层。(2) ADO的结构ADO模型包含了7个对象和4个集合,ADO的结构图如图2-1所示。2.3 SQL语句简介SQL是一种面向数据库的通用数据处理语言规范,能完成以下几类功能:提取查询数据,插入修改删除数据,生成修改和删除数据库对象,数据库安全控制,数据库完整性及数据保护控制。本文用到的SQL语句主要为select语句和insert语句。连接对象(Connection)错误集合(Errors)错误对象(Error)属性集合(Properties)属性对象(Property)命令对象(Command)参数集合(Parameters)参数对象(Parameter)属性集合(Proper

19、ties)属性对象(Property)记录集对象(Recordset)域集合(Fields)域对象(Field)属性集合(Properties)属性对象(Property)图2-1 ADO的结构图3 需求分析与总体设计3.1 系统需求分析邮件的自动分组主要是为了管理方便,查阅方便,以节省用户宝贵的时间。在实现邮件自动分组时用户可以输入好友信息,以便好友发过来的Email可以分到一起,这对与查找节省了很多时间,同时也提供了极大的方便。在进行Email来源分组时,分组信息是根据用户输入的好友姓名及Email地址自动生成。出来根据Email来源进行分类外,本文还研究通过时间作为条件来进行分类,比如说

20、将邮件分为:今天收到的Email、昨天收到的Email、更早收到的Email。恶意邮件的发现是为了提高安全性的,可过滤一些用户认为是垃圾邮件的Email,用户可以根据收到的Email,点击相应的菜单来启动对Email进行分析的过程。通过查找相应的关键字列出垃圾邮件列表,用户可以根据所列出的垃圾邮件列表进行操作:如删除该Email或忽略对该Email为垃圾邮件的忽略。因为有些对于用户来说是非常重要的邮件而被误判为垃圾Email的情况发生。就像有些杀毒软件会误把一些系统文件或一些用户自己有文件误报为病毒一样。这样做是为了在经过用户确认的前提下从邮件服务器中删除邮件,进一步提高可靠性和安全性。3.2

21、 系统功能模块图系统功能模块图如图3-1所示。由该图可以看出本系统包含了3个大的功能模块:Email接收并解析,恶意Email的发现,Email自动分组。其中恶意Email的发现包括了关键字的添加,该恶意Email的删除,该恶意Email的忽略三个小的功能模块。Email自动分组中包括了按Email来源分组,按Email接收到的时间分组,好友信息的添加3个小的功能模块。图3-1 系统功能模块图3.3 系统目标本文所设计的Email分析系统要能够实现Email的接收并解析,恶意Email的发现及发现后的处理,Email 的自动分组。并且这些功能要能够有很好的扩展性,为了达到扩展性的要求,本文从以

22、下几个方面进行设计:恶意邮件的关键字可以手动添加,添加完成之后保存于数据库中以便用户在下次实用时不需要重复输入关键字进行扫描。对于扫描到的恶意Email,由用户来执行相应的操作:删除该Email或忽略该Email为恶意Email的警告,以免系统自动进行操作时删除用户重要的Email。好友信息可由用户添加,好友信息存入Access数据库中,这样用户只需输入一次好友信息即可并且当用户增加一个好友信息时能够动态生成好友并将该好友发过来的Email自动放入该分组当中,便于用户的查找与阅读。Email分组还提供另外一种分组:按时间分组,以方便用户按时间段来查找邮件,这样也可以节省用户查找Email的时间

23、,提高了用户的效率。本系统用VC开发,连接数据库采用ADO方式与Access进行连接。4 具体实现4.1 数据库的创建本系统采用Access数据库来存储相关信息,建立数据库的过程如下:在工程所在目录下点击鼠标右键,在弹出的快捷菜单中将鼠标移到“新建”,再在弹出的字菜单中点击“新建Microsoft Office Access 应用程序”。到此数据库就建立好了,将改Access文件改名Email.mdb。数据库表格的建立:本系统中数据库主要是用于存储恶意Email判断的关键字信息及好友信息。本系统建立两张表:keyword表和emailbook表。(1) keyword表只包含一个字段keywo

24、rd,设计如表4-1所示。表4-1 关键字表keyword字段含义字段名数据类型说明关键字keyword文本(2) emailbook表包含两个字段:name和email,其中name是好友的姓名,email为好友的email地址。设计如表4-2所示。表4-2 用户信息表(通信录表)emailbook字段含义字段名数据类型说明姓名name文本Email地址email文本4.2 MFC连接数据库本系统在进行数据库连接时采用的是ADO方式进行连接。ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对O

25、LE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。ADO数据库开发的基本流程,它的基本步骤如下:(1) 初始化COM库,引入ADO库定义文件(2) 用Connection对象连接数据库(3) 利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。(4) 使用完毕后关闭连接释放对象。接下来详细介绍连接过程:COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp:InitInsta

26、nce()的重载函数中完成,代码:BOOL CADOTest1App:InitInstance()AfxOleInit();. (2) 用#import指令引入ADO类型库为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:#import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF)这一语句的作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C+头文件来定义ADO库。开发环境中msado15.dl

27、l不一定在这个目录下,要按实际情况修改;在编译的时候可能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告:msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned。(3) 创建Connection对象并连接数据库为了首先我们需要添加一个指向Connection对象的指针_ConnectionPtr m_pConnection,下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉:BOOL CAD

28、OTest1Dlg:OnInitDialog()CDialog:OnInitDialog();HRESULT hr;Tryhr = m_pConnection.CreateInstance(ADODB.Connection);/创建Connection对象if(SUCCEEDED(hr)hr = m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb,adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,/需要改为:Pro

29、vider=Microsoft.Jet.OLEDB.3.51;catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息在这段代码中我们是通过Connection对象的Open方法来进行连接数据库的。 (4) 执行SQL命令并取得结果记录集为了取得结果记录集,我们定义一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset;并为其创建Recordset

30、对象的实例: m_pRecordset.CreateInstance(ADODB.Recordset),SQL命令的执行可以采用多种形式,本文采用了Recordset对象进行查询取得记录集。m_pRecordset-Open(SQL语句,_variant_t(IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);插入操作采用的是Connection对象的Execute方法执行SQL命令。Execute()方法的原型如下所示:RecordsetPtr Connection15:Execute ( _bst

31、r_t CommandText, VARIANT * RecordsAffected, long Options ) 其中CommandText是命令字串,通常是SQL命令。参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一:adCmdText表明CommandText是文本命令;adCmdTable表明CommandText是一个表名;adCmdProc表明CommandText是一个存储过程;adCmdUnknown表明CommandText内容未知。Execute()函数执行完后返回一个指

32、向记录集的指针。(5) 关闭记录集与连接 记录集或连接都可以用Close()方法来关闭:m_pRecordset-Close();/关闭记录集m_pConnection-Close();/关闭连接本系统在设计对Access进行操作时为了方便将上述操作写成了一个类。4.3 Email收取并解析本文所研究的Email分析技术的研究与实现,在实现收取邮件时,用到了一个动态链接库:jmail.dll。该动态链接库封装了对邮件相关的操作。jmail常用的一些方法及属性如下:Body : String :信件体,正文,可使用AppendText追加内容 。如:JMail.Body = Hello worl

33、d ErrorCode : Integer :如果JMail.silent设置为true,ErrorCode包含的是错误代码 。如:Response.Write( JMail.ErrorCode ); ErrorMessage : String :如果JMail.silent设置为true,包含的是错误信息 。如:Response.Write( JMail.ErrorMessage )。 Priority : Integer :优先级. 范围在1-5之间 ,1 高优先级. 有些邮件程序称之为紧急 ;2 也是高优先级 ;3 普通优先级 ;4 低优先级 ;5 最低的优先级 。如:JMail.Pri

34、ority = 3 ServerAddress : String :指定邮件服务器的地址。可以指定多个服务器,用分号点开。可以指定端口号。如果serverAddress保持空白,JMail会尝试解决远程邮件服务器,然后直接发送到服务器上去。如:JMail.ServerAddress = ; :2500 Close() :强制JMail关闭缓冲的与邮件服务器的连接 ,如:JMail.Close(); 要接收某个邮箱的Email,我们首先要连接至该服务器,这需要我们输入用户名和密码及邮件服务器地址。系统运行时主界面如图4-1所示图4-1 Email分析系统主界面连接邮件服务器时用到的方法为:Con

35、nect(),该方法有几个参数:用户名(用户ID),用户密码,服务器地址,服务器端口号,接收邮件的服务器端口号一般为110号端口。在连接服务器并收取Email时,用户在输入有关信息时有可能会在前面或后面带上空格,我们必须过滤这些空格,否则的话会出现服务器地址输入错误或者用户名或密码输入错误。这样用户会觉得自己没有输错而怀疑我们的系统有问题,为了避免这种错误我们应该在获得用户输入的上述信息之后进行过滤操作。在用户使用过程当中也有可能会出现这种情况:用户没有输入用户名就点击了接收邮件按钮,这样的操作是不允许的,因为在没有输入用户名的情况下,系统根本不知道从哪里接收Email。我们必须加一个判断条件

36、看用户是否输入了用户名,在用户没有输入用户名的条件下不允许用户收取Email。同样的道理用户很有可能会忘记输入服务器地址,没有输入该信息系统根本不知道从哪个邮件服务器中接收邮件,这时我们也必须加一个判断条件,以减少系统出错的概率,让我们的系统更加健壮。在用户接收Email时,用户可能会连续两次点击接收邮件,我们应该只在邮件列表空控件中显示最新的邮件信息,而不应该有重复的信息出现,所以我们必须在点击接收邮件按钮的一开始要清空邮件信息控件中所有的信息。此外,在接收完邮件时也必须释放邮件信息指针,但此时不能关闭连接,因为在后面的恶意Email的删除中是要用到该连接指针的,但是如果不关闭连接的话,再次

37、点击接收邮件按钮时会出现错误(非法操作),因为此时连接是打开的,再次打开是不允许的。解决方法如下:在进行打开前先判断连接是否是打开的,若是打开了的,则先关闭该连接,若没有打开则直接创建连接就可以了。在接收邮件时的连接在其他的类中要用到,此时必须定义一个类的共有成员来指向该指针,只有这样在删除时才能够用该连接指针。本系统中出来要删除恶意邮件以外,其他的操作基本上都是对Email的只读操作,在进行只读操作时,用集合类来操作更为方便快捷,该集合类的每一项存储的是一个类的一个指针。该类是一个邮件信息类,主要包括Email的来处,Email的主题,Email接收到的时间,Email的正文,该Email的

38、索引号(用于删除时的一个参数)这五个成员变量,这五个成员变量出来了Email的索引号之外都是字符串类型的变量,索引号是一个长整型的数。在遍历每封Email的同时把这些Email都存储到集合类当中。在收取了所有的Email的时候,同时在集合类当中存储了所有的邮件信息。同时也要让邮件的一些信息显示出来如:主题,来源,时间等,以便用户查阅。连接并收取邮件的代码如下:UpdateData();m_strMailServer.TrimLeft();m_strMailServer.TrimRight();m_strUserid.TrimLeft();m_strUserid.TrimRight();m_st

39、rPassword.TrimLeft();m_strPassword.TrimRight();if(m_strMailServer.GetLength() = 0)AfxMessageBox(邮件服务器不能为空);return;if(m_strUserid.GetLength() Disconnect();/ 超时 30秒pPOP3-Timeout = 30;/ 连接邮件服务器pPOP3-Connect(LPCTSTR)m_strUserid,(LPCTSTR)m_strPassword, (LPCTSTR)m_strMailServer, 110);p=pPOP3;/给类的成员指针赋值,以便

40、其他类能够调用该连接指针pMessages = pPOP3-Messages;/ 已下载的邮件的实际个数(因为第0个ITEM是未用的,所以减1)long lCount = pMessages-Count - 1;CMessages * EMail_Messages;if(lCount = 0)AfxMessageBox(信箱为空);elsejmail:IMessagePtr pMessage;/ 遍历每封信for(long i = 1; i Itemi;_bstr_t bstrFrom = pMessage-From;_bstr_t bstrSubject = pMessage-Subject

41、;_bstr_t bstrBody = pMessage-Body;COleDateTime oleDate = pMessage-Date;/-将接收到的邮件存储到全局的集合类变量中,以便日后使用EMail_Messages = new CMessages (const char *)bstrFrom, (const char*)bstrSubject,(const char*)oleDate.Format(%Y-%m-%d),(const char *) bstrBody,i);theApp.messageArray.Add(EMail_Messages);/-将邮件信息添加到列表框控件中

42、int nListItem = m_ctlMessagesList.InsertItem(i, (const char * )bstrFrom);m_ctlMessagesList.SetItem(nListItem, 1, LVIF_TEXT, (const char*)bstrSubject, 0, 0, 0, NULL);m_ctlMessagesList.SetItem(nListItem, 2, LVIF_TEXT, (const char*)oleDate.Format(%Y-%m-%d), 0, 0, 0, NULL);m_strBodyArray.Add(const char*

43、)bstrBody);pMessage.Release();catch(_com_error e)CString strErr;strErr.Format(错误信息:%srn错误描述:%s, (LPCTSTR)e.ErrorMessage(), (LPCTSTR)e.Description();AfxMessageBox(strErr);接收部分流程图如图4-2所示:图4-2 接收部分流程图在接收了所有的邮件之后,用户在邮件列表当中点击某个Email的时候,必须要显示出邮件的正文供用户阅读。要实现此功能就要添加一个消息处理函数,这个消息处理函数是针对邮件列表框控件的,即当选中某项时就必须发出一

44、个相应的消息,通过消息路由在相应的消息处理函数中进行处理,该消息处理函数完成的功能就是在邮件正文文本框当中显示出邮件的正文。该消息处理函数代码如下:/-/显示邮件正文/-void CEmailAnalyseSystemDlg:OnShowBody(NMHDR* pNMHDR, LRESULT* pResult) NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;POSITION pos = m_ctlMessagesList.GetFirstSelectedItemPosition();if(pos)int nItem = m_ctlMessagesList.GetNextSelectedItem(pos);m_strBody = m_strBodyArray.GetAt(nItem);UpdateData(FALSE);*pResult = 0;4.4 恶意Email处理恶意邮件已经成为威胁用户安全的主要形式之一,如何能够做到及时发现恶意邮件并由用户进行相应的操作已经成为Email使用者广泛关注的问题,同样也是一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号