邮件客户端系统的设计与实现--计算机网络

更新时间:2023-09-05 01:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《计算机网络》结课论文

简单电子邮件客户端的设计与实现

学生姓名 学 号 所属学院 专 业 计算机科学与技术 班 级

信息工程学院

摘 要

随着改革开放的深入发展,社会主义市场经济的建立,信息化时代的步伐不断加快。

根据最新公布的2006-2020国家信息化发展战略,信息化是充分利用信息技术,开发利用信息资源,促进信息交流和知识共享,提高经济增长质量,推动经济社会发展转型的历史进程。电子邮件是整个网间网,以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人通信的需求。

本文在深入了解电子邮件管理的实际操作流程的基础上,总结生活中常用的电子邮件功能,采用面向对象的编程思想结合当前流行的Jmail技术设计并开发一套简单、方便的客户端电子邮件软件,实现对电子邮件灵活的管理。

关键词:电子邮件 客户端 Jmail组件

目 录

1 绪论 ......................................................................................................................................................... 1 1.1 研究背景 ............................................................................................................................................. 1 1.2 研究现况 ............................................................................................................................................. 1 1.3 系统概述 ............................................................................................................................................. 2 1.4 本文工作 ............................................................................................................................................. 3 2 开发环境的搭建 ................................................................................................................................. 3 2.1 运行平台 ............................................................................................................................................. 3 2.1.1 硬件平台 ........................................................................................................................................ 3 2.1.2 软件平台 ........................................................................................................................................ 3 2.2 运行环境的配置 ............................................................................................................................... 3 2.2.1 POP3和STMP简介 ................................................................................................................. 3 2.2.2 安装POP3/SMTP服务 ........................................................................................................... 3 2.2.3 配置POP3/SMTP服务 ........................................................................................................... 4 2.2.4 Jmail组件的注册 ....................................................................................................................... 6 3 系统概要设计 ........................................................................................................................................ 7 3.1 设计目标 ............................................................................................................................................. 7 3.2 功能模块分析 ................................................................................................................................... 7 4 系统详细设计 ........................................................................................................................................ 9 4.1 重点模块的详细设计 ...................................................................................................................... 9 4.1.1 主界面模块的详细设计 ............................................................................................................. 9 4.2.2 写邮件模块的详细设计 ........................................................................................................... 12 4.2.3 草稿箱模块的详细设计 ........................................................................................................... 14 4.2.4 收件箱模块的详细设计 ........................................................................................................... 15 4.2.5 读邮件模块的详细设计 ........................................................................................................... 16 4.2.6 通信录模块的详细设计 ........................................................................................................... 17 4.2.7 使用MAPI函数实现发送功能的详细设计 ...................................................................... 18 4.2.8 使用Jmail组件实现接收功能的详细设计 ...................................................................... 23 5 测试分析 ............................................................................................................................................... 25

6 总结 ........................................................................................................................................................ 30 参 考 文 献 ......................................................................................................................................... 31 Abstract ...................................................................................................................... 错误!未定义书签。 致 谢 ............................................................................................................. 错误!未定义书签。 仲恺农业工程学院毕业论文(设计)成绩评定表 .............................................. 错误!未定义书签。

1 绪论

1.1 研究背景

随着改革开放的深入发展,社会主义市场经济的建立,信息化时代的步伐不断加快。根据最新公布的2006-2020国家信息化发展战略,信息化是充分利用信息技术,开发利用信息资源,促进信息交流和知识共享,提高经济增长质量,推动经济社会发展转型的历史进程 。

电子邮件是当前信息化时代中不可缺少的重要通信手段。电子邮件是—种用电子手段提供信息交换的通信方式,是Internet应用最广的服务:通过网络的电子邮件系统,用户可以用非常低廉的价格(不管发送到哪里,都只需负担电话费和网费即可),以非常快速的方式(几秒钟之内可以发送到世界上任何你指定的目的地),与世界上任何一个角落的网络用户联系,这些电子邮件可以是文字、图像、声音等各种方式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。这是任何传统的方式也无法相比的。正是由于电子邮件的使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻,使得电子邮件被广泛地应用,它使人们的交流方式得到了极大的改变。电子邮件综合了电话通信和邮政信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于计算机的邮件报文系统。它承担从邮件进入系统到邮件到达目的地为止的全部处理过程。电子邮件不仅可利用电话网络,而且可利用任何通信网传送。在利用电话网络时,还可利用其非高峰期间传送信息,这对于商业邮件具有特殊价值。由中央计算机和小型计算机控制的面向有限用户的电子系统可以看作是一种计算机会议系统。

最重要的是,电子邮件是整个网间网,以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人通信的需求。在高度信息化的今天,灵活和便捷地使用电子邮件,对提高工作效率、贯彻国家信息化发展战略意义重大。 1.2 研究现况

经过在网上的查找,发现有关于电子邮件的管理系统有:

“Windows Live Mail Desktop”,它将桌面软件的功能性与基于 Web 的电子邮件的灵活性结合在一起,轻松接收新闻组和 RSS 源,在脱机状态下撰写、删除及管理电子邮件;即时添加关于任何信息的 Windows Live Spaces 网络日志项 与 Windows Live

Messenger 联系人保持密切联系,也可以创建并编辑照片电子邮件;

“KooMail” 它支持分割发送大邮件并且接收后自动合并,对分割发送的邮件支持断点续传,其中邮件模板支持附件主题等,具有发送邮件加密功能使邮件更安全,实现邮件的过滤和规则功能;发送邮件无须SMTP服务器,具有多种邮件编码支持各国语言字符集邮件彻底与乱码告别;可以选择先接收较大或较小的邮件从而优化收邮件列表;能定时发送邮件。

“梦幻快车(DreamMail)”它支持 SMTP、eSMTP、POP 3、Hotmail、Yahoo 等邮件协议,真正采用多线程高速收发邮件。附带增强型远程管理,可以直接查看服务器上邮件的内容、直接删除邮件;具有邮件过滤器、黑名单及白名单等组合使用能有效对付垃圾邮件;能自动检测破坏性邮件增强系统安全。另外,梦幻快车通过特有的破乱码技术轻松对付各种乱码邮件。此外,它还集成了许多特色功能,比如:添加账号时自动检索 POP3/SMTP服务器、可以自定义动态滚动新闻、支持显示发件人地址及插入邮件表情等等。

“Foxmail”它是由原华中理工大学张小龙开发的一款优秀的国产电子邮件客户端软件,2005年3月16日被“腾讯”收购。新的Foxmail具备强大的反垃圾邮件功能。它使用多种技术对邮件进行判别,能够准确识别垃圾邮件与非垃圾邮件。垃圾邮件会被自动分捡到垃圾邮件箱中,有效地降低垃圾邮件对用户干扰,最大限度地减少用户因为处理垃圾邮件而浪费的时间。数字签名和加密功能在Foxmail 5.0中得到支持,可以确保电子邮件的真实性和保密性。 通过安全套接层(SSL)协议收发邮件使得在邮件接收和发送过程中,传输的数据都经过严格的加密,有效防止黑客窃听,保证数据安全。其他改进包括:阅读和发送国际邮件(支持Unicode)、地址簿同步、通过安全套接层(SSL)协议收发邮件、收取http://www.77cn.com.cn邮箱邮件;提高收发Hotmail、MSN电子邮件速度 支持名片(vCard)、以嵌入方式显示附件图片、增强本地邮箱邮件搜索功能等等。 1.3 系统概述

一般的客户端电子邮件软件应该有以下的功能: 1) 编辑邮件(用户进行邮件编辑)······书写新邮件

2) 读邮件(用户在收件箱、发件箱、草稿箱和垃圾箱中查阅邮件信息) 3) 发送邮件(发送已编辑的邮件或回复接收邮件)······发送邮件 4) 接收邮件(接收发送方的邮件)······收取邮件 5) 添加联系人(向通信录添加联系人信息)

6) 编辑联系人(编辑通信录中联系人的信息) 7)删除联系人(删除通信录中联系人信息) 1.4 本文工作

本文在深入了解电子邮件管理的实际操作流程的基础上,总结生活中常用的电子邮件功能,采用面向对象的编程思想设计并开发一套简单、方便的客户端电子邮件软件,实现对电子邮件灵活的管理。

2 开发环境的搭建

2.1 运行平台 2.1.1 硬件平台

CPU:P4 1.8GHZ。 内存:256MB以上。 2.1.2 软件平台

操作系统:Windows xp。

C++程序开发工具:VISUAL C++ 6.0 分辨率:推荐使用1024×768像素。 2.2 运行环境的配置 2.2.1 POP3和STMP简介 (1)POP3概述

POP3是Post Office Protocol 3的简称,即邮局协议第3版。它规定了怎样将个人计算机连接到Internet的邮件服务器和如何下载电子邮件。它是Internet电子邮件的第一个离线协议标准。简单地说,POP3就是一个简单而实用的邮件信息传输协议。 (2)SMTP概述

SMTP是Simple Mail Transfer Protocol的简称,即简单邮件传输协议。SMTP是一种提供可靠且有效电子邮件传输的协议。它是一组用于由源地址到目的地址发送邮件的规则,用来控制信件的中转方式。它帮助每台计算机在发送或中转信件时找到下一个目的地,通过SMTP协议所指定的服务器,将邮件发送到收件人的服务器上。 2.2.2 安装POP3/SMTP服务

在Windows 2003下架设邮件服务器可以用系统自带的POP3及SMTP服务建立。同其他服务一样,默认情况下这两个服务是没有安装的,需要手工进行添加。安装的步骤

如下:

第一步:安装POP3服务组件。

以系统管理员身份登录Windows 2003系统,选择【控制面板】|【添加或删除程序】|【添加/删除Windows组件】命令,在弹出的【Windows组件向导】对话框中选中【电子邮件服务】选项。单击【详细信息】按钮,可以看到该选项包括两部分内容,分别是“POP3服务”和“POP3服务Web管理”。为方便用户以远程Web方式管理邮件服务器,建议选中【POP3服务Web管理】命令,如图2.1所示。

图2.1 选中【POP3服务Web管理】

第二步:安装SMTP服务组件。

选中【应用程序服务器】选项,单击【详细信息】按钮。在【Internet信息服务(IIS)】选项中查看详细信息,选中SMTP Service选项,单击【确定】按钮。此外,如果需要对邮件服务器进行远程Web管理,一定要选中【万维网服务】选项中的【远程管理(HTML)】命令组件。完成以上设置后,单击【下一步】按钮,系统就开始安装配置POP3和SMTP服务了。

2.2.3 配置POP3/SMTP服务

配置POP3/SMTP服务器步骤如下: 第一步:创建邮件域。

选择【开始】|【管理工具】|【POP3服务】命令,弹出【POP3服务控制台】对话框。选中左栏中的POP3服务后,单击右栏中的【新域】选项,弹出【添加域】对话框。在【域名】文本框中输入邮件服务器的域名,也就是邮件地址“@”后面的部分,例如http://www.77cn.com.cn,然后单击【确定】按钮,如图2.2所示。

图2.2 创建新域

第二步:创建系统登陆帐户。

选中新建的http://www.77cn.com.cn域,在右栏中选择【添加邮箱】命令,弹出【添加邮箱】对话框,在【邮箱名】文本栏中输入邮件用户名,然后设置用户密码,最后单击【确定】按钮,完成系统登陆帐户的创建,如图2.3所示。

图2.3 创建邮箱

第三步:配置SMTP服务器。

选择【开始】|【程序】|【管理工具】|【Internet信息服务管理器】选项。在【IIS管理器】对话框中右击【默认SMTP虚拟服务器】选项,在弹出的菜单中选择【属性】选项,进入【默认SMTP虚拟服务器属性】对话框,切换到【常规】选项卡,在【IP地址】下拉列表框中选择邮件服务器的IP地址即可。单击【确定】按钮,这样一个简单的邮件服务器就架设完成了,如图2.4所示。完成以上设置后,就可以使用邮件客户端软件连接邮件服务器进行邮件收发工作。只要在POP3和SMTP处输入邮件服务器的IP地址即可。注意:这个时候smtp access里面设置的是匿名访问,此时任何用户都可以利用此mail服务器发邮件。

图2.4 设置SMTP虚拟服务器属性

第四步:设置在SMTP虚拟服务器中传入邮件信息的存放位置。

SMTP虚拟服务器有一个本地默认域,默认指定的传入邮件信息都放置在

C:\Inetpub\mailroot\Drop文件夹中,可以根据实际情况更改Drop文件夹的位置,如图2.5。

图2.5:设置传入邮件信息的存放位置

2.2.4 Jmail组件的注册

Jmail组件是一个功能强大的邮件发送组件,使用该组件可以方便地实现邮件的发送和接收功能,而且Jmail组件具有通用性,很多语言都可以使用。但是在使用之前,首先要注册该组件。

注册步骤如下:

第一步:从网络上下载的Jmail.dll文件。

第二步:把Jmail.dll文件复制到 C:\WINDOWS\system32\目录下。 第三步:运行注册命令。

在【运行】中输入regsvr32 C:\WINDOWS\system32\Jmail.dll语句,单击确

定按钮,当出现如图2.6所示的提示对话框,则完成该组件的注册。

图2.6 Jmail.dll注册成功

3 系统概要设计

3.1 设计目标

(1)系统架构清晰、界面友好美观、操作简便、实用性强; (2)提供灵活、方便、快捷、准确的电子邮件管理;

3.2 功能模块分析

根据系统的用例图和需求分析,可以把系统划分为以下几个功能模块: (1) 登陆模块:

通过电子邮箱帐户和密码进行身份验证,正确输入电子邮箱帐户和密码后,进入系统主界面进行操作。 (2) 主界面模块:

整个软件的导航模块,可以单击该界面左侧的按钮进入相应的信箱。在该界面右侧显示了各个界面的邮件信息,包括邮件总数和新邮件数。 (3) 写邮件模块:

用户可以进行邮件编辑、发送,单击“选择收件人”按扭,可以向收件人文本框中插入地址;通过“添加邮件”和“删除邮件”按扭来设置是否发送附件;编辑好的邮件,单击工具栏中的“发送”按扭,可以发送邮件。 (4) 读邮件模块:

用户在收件箱、发件箱、草稿箱和垃圾箱中按下工具栏中的“查看”按钮后,会打开读邮件模块,用户可以查看当前选择的邮件信息,并且根据需要进行回复或转发操作。 (5) 发信箱模块:

保存用户已发送的邮件。用户可以在发信箱中查看邮件信息,并可以进行再发送。在工具栏设有查看按钮,删除按钮,清空按钮和排序按钮。用户可以在工具栏选择“排序”下拉按钮的菜单项选择排序字段。用户单击“查看”,可以查

看当前选择的电子邮件。 (6) 草稿箱模块:

主要用来保存用户编辑好但没有发送的邮件。用户可以在草稿箱中查看邮件信息,并可以进行发送。在工具栏设有查看按钮,删除按钮,清空按钮和排序按钮。用户可以在工具栏选择“排序”下拉按钮的菜单项选择排序字段。用户单击“查看”,可以查看当前选择的电子邮件。 (7) 垃圾箱模块:

主要用来保存从收件箱中删除的邮件,用户可以在垃圾箱中查看邮件信息,并可以进行发送。在工具栏设有查看按钮,删除按钮,清空按钮,排序按钮和分类按钮。用户可以在工具栏选择“排序”下拉按钮的菜单项选择排序字段,也可以通过“分类”按钮根据主题筛选邮件。用户单击“查看”,可以查看当前选择的电子邮件。 (8) 收件箱模块:

主要用来管理用户接收到的电子邮件。在工具栏设有查看按钮,刷新按钮,删除按钮,清空按钮,排序按钮和分类按钮。用户可以在工具栏选择“排序”下拉按钮的菜单项选择排序字段,也可以通过“分类”按钮根据主题筛选邮件。用户单击工具栏上的“刷新”按钮,获取新的邮件信息,并写入数据库中。用户单击“查看”,可以查看当前选择的电子邮件。 (9) 通信录模块:

用于管理用户的常用联系人。用户可以设置一些分组,然后将常用联系人添加到分组中,这样在查找联系人时就可以根据分组进行快速查找了。

系统的功能模块图如下:

图3.2 系统功能模块图

4 系统详细设计

4.1 重点模块的详细设计 4.1.1 主界面模块的详细设计

本模块的界面是 1个基于对话框资源。在该对话框中添加控件,包括6个图片控件和9个按钮控件,并向工程导入8个位图资源,修改其位图ID。控件的属性如表1。

表1 主界面控件设置表

控件ID

IDC_STATICRECEIVE IDC_STATICSEND IDC_STATICDRAFT IDC_STATICLITTER

控件属性 type: Bitmap、 Image: IDB_RECEIVE

type: Bitmap、

Image:IDB__STATICSEND

type: Bitmap、

Image:IDB__STATICDRAFT

type: Bitmap、

Image:IDB__STATICLITTER

关联变量 无 无 无 无

IDC_STATICADDRESS

IDC_FRAME IDC_BUTRECEIVE IDC_BUTWRITE IDC_RECEIVEBOX IDC_ SENDBOX IDC_ DRAFTBOX IDC_ LITTERBOX IDC_ CONTACT IDC_ BUTMIN IDC_ BUTCLOSE type: Bitmap、

Image:IDB__STATICADDRESS

type: Frame、 Color: Black 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw 勾选Bitmap 勾选Bitmap

CbuttonHot m_Receive Cstactic m_Frame CbuttonHot m_ Write CbuttonHot m_ Receivebox CbuttonHot m_Sendbox CbuttonHot m_ Draftbox CbuttonHot m_ Litterbox CbuttonHot m_ Contact Cbutton m_ Min Cbutton m_Close

本模块的主要任务是当用户登录后,提供不同按钮进入不同的功能模块实现具体的操作,并在信息区域显示当前登陆的邮箱内邮件及新邮件的数量。

主界面通过在头文件声明各个子窗体的指针与其他的模块建立连接,这些指针包括CMailCountDlg * MailCountDlg;//邮件统计窗体、CReceiveBoxDlg*ReceiveBoxDlg;//收件箱、CSendBoxDlg * SendBoxDlg;//发件箱、CDraftBoxDlg * DraftBoxDlg;//草稿箱、CLitterBoxDlg * LitterBoxDlg;//垃圾箱、CWriteMailDlg * WriteMailDlg;//写邮件、CReadMailDlg * ReadMailDlg;//读邮件、CAddressDlg * AddressDlg;//通信录、CStatusBar m_StatusBar;//状态栏。

主界面的下方设置有状态栏,显示当前登陆的邮箱及当前的日期和时间,为用户在编辑邮件时提供一些简要的信息。主界面的右上方设置了最小化按钮和关闭按钮,用户能通过主界面的这些按钮退出或将程序最小化。创建状态栏和设置最小化按钮和关闭按钮的显示图片,均在主界面的OnInitDialog方法中完成。其中,主界面的OnCtlColor函数,处理WM_CTLCOLOR消息,用于绘制背景;OnButmin函数处理WM_SYSCOMMAND消息,用于处理“最小化”按钮的单击事件。

当用户点击主界面中的功能按钮进入相应的模块时,原来用于显示邮件及新邮件数量等的信息区域,会相应地改变。用户能通过该区域的变化,直观地判断当前系统所处的模块。在主界面对话框中,添加CreateDialogBox函数用于创建用户要打开的子窗体,添加DestroyWindowBox函数用于销毁当前打开的子窗口,此外在主界面的PreTranslateMessage虚方法中,屏蔽<ESC>键关闭窗体的功能,并设置无标题窗体的拖动,从而实现信息区域的变化。

本系统的按钮具有热点效果,实现步骤如下:

(1)以CButton类为基类,派生一个CbuttonHot类 (2)重载DrawItem方法,在该方法中绘制按钮控件 代码如下:

CDC dc; //通过创建一个CDC类的对象,声明设备上下文 dc.Attach(lpDrawItemStruct->hDC);//获得绘制按钮设备上下文 UINT state = lpDrawItemStruct->itemState;//获取状态 CRect rect; //声明区域对象

GetClientRect(rect);//获得编辑框客户区域 CString text;

GetWindowText(text);//获得按钮文本 if(state & ODS_DISABLED)//如果按钮不可用 { }

else if(m_IsInRect==TRUE) //如果鼠标在按钮上 { }

else//默认情况下 { }

(3)重载PreSubclassWindow方法,在该方法中设置定时器

代码如下:

dc.SetBkMode(TRANSPARENT);//设置背景透明 dc.SetTextColor(RGB(0,0,0));//设置文本颜色 dc.DrawText(text,&rect,DT_CENTER);//绘制文本

dc.SetBkMode(TRANSPARENT);//设置背景颜色 dc.SetTextColor(RGB(255,0,0));//设置文本颜色 dc.DrawText(text,&rect,DT_CENTER);//绘制文本

dc.SetBkMode(TRANSPARENT);//设置背景透明 dc.SetTextColor(RGB(0,0,0));//设置文本颜色 dc.DrawText(text,&rect,DT_CENTER);//绘制文本

SetTimer(1,10,NULL); //设置定时器 CButton::PreSubclassWindow();

(4)在CbuttonHot类的OnTimer方法中,设置在定时器中判断鼠标是否移动到按钮上

代码如下:

CPoint point;//声明Cpoint变量

GetCursorPos(&point);//获得鼠标位置 CRect rcWnd;//声明区域对象

GetWindowRect(&rcWnd);//获得按钮区域 if(rcWnd.PtInRect(point))//判断鼠标是否在按钮上 { }

else//不在按钮区域内 { }

END: CButton::OnTimer(nIDEvent); 4.2.2 写邮件模块的详细设计

if(m_IsInRect == TRUE)//判断鼠标是否一直在按钮上

goto END;//跳转到标记

else//鼠标移动到按钮上 { }

m_IsInRect = TRUE;//设置m_IsInRect变量值 Invalidate();//重绘按钮

if(m_IsInRect == FALSE)//判断鼠标一直在按钮外

goto END;//跳转到标记

else//鼠标移动到按钮外 { }

Invalidate();//重绘按钮

m_IsInRect = FALSE;//设置m_IsInRect变量值

//设置标记,调用基类方法

本模块的界面是1个基于对话框资源。在该对话框中添加控件,包括4个文本框控件、1个列表控件和3个按钮控件。控件的属性设置如表2。

表2 写邮件界面控件设置表

控件ID IDC_EDIT1 IDC_ EDIT2 IDC_ EDIT3 IDC_ EDIT4 IDC_LIST1 IDC_BUTSELECT IDC_BUTADD IDC_ BUTDEL 控件属性 勾选Read-only

无 无

Multiline、Vertical scoll、 Auto Vscroll、Want return

勾选Vertical scroll 勾选Owenr draw 勾选Owenr draw 勾选Owenr draw

关联变量 Csting m_SendMan Csting m_ReceiveMan Csting m_Motif Csting m_Text ClistBox m_Annex CbuttonHot m_Select CbuttonHot m_Add CbuttonHot m_Del

本模块的任务是让用户点击“写信”功能按钮后进入写邮件模块,用户可以在该模块内编辑邮件,并根据工具栏的按钮进行发送、存草稿、取消等操作。

在邮件编辑时,写邮件模块所提供的“选择收件人”按键,由对话框的OnButselect方法处理该按键的单击事件,当按钮按下后弹出“联系人列表”对话框,在“联系人列表”对话框中可以通过条件查询,将查询结构插入到写邮件模块的“收件人”文本框中。对话框的OnButadd方法处理“添加附件”按钮的单击事件,当按钮按下后弹出“附件列表”对话框,用户在“附件列表”对话框中选择附件的路径。对话框的OnButdel方法处理“删除附件”按钮的单击事件,用户附件文本框中,选择需要删除的附件,单击"删除附件"按钮即可删除选中的附件。

写邮件模块中所设置的工具栏提供“发送”、“存草稿”和“取消”按钮。用户在编辑邮件后,选择所需的工具栏按钮执行相应的操作。工具栏在对话框的OnInitDialog方法中创建。写邮件对话框的OnSend方法处理工具栏“发送”按钮的单击事件,该事件调用线程函数发送邮件,并将发送的邮件信息写入到发件箱,前提在主界面的.CPP文件中声明MAPI函数原型,并定义线程函数ThreadProc,在该线程函数中执行MAPI函数的代码,实现发送邮件的功能,执行该线程函数后会返回一个执行成功或执行失败的值,用来判读邮件是否发送成功。写邮件对话框的OnSave方法处理工具栏中“存草稿”按钮的单击事件,当按钮按下后将当前编辑的邮件信息保存到草稿箱中。对话框的OnCan方法处理工具栏中“取消”按钮的单击事件,当按钮按下后清空当前编辑的邮件信息。

线程函数ThreadProc的说明如下:

线程函数ThreadProc,是一个应用程序定义的函数,可作为起始地址的线程。指定这个地址时,调用CreateThread或CreateRemoteThread功能。ThreadProc是一个占位符的应用定义的函数名称。线程函数ThreadProc的函数原型如下:

DWORD WINAPI ThreadProc( LPVOID lpParameter //线程数据

);

其中参数lpParameter用于接收CreateThread或CreateRemoteThread功能传递给函数的线程数据。执行线程函数ThreadProc后,将返回一个布尔型的值表明函数执行是否成功。系统依靠该返回值,判断提示消息“发送成功”或“操作失败”。 4.2.3 草稿箱模块的详细设计

本模块界面的是1个基于对话框资源。在该对话框中添加控件,包括1个文本框控件、1个列表视图控件、32个复选框控件和5个按钮控件。控件的属性设置如表3。

表3 草稿箱界面控件设置表

控件ID

IDC_EDIT1 IDC_LIST1 IDC_CURRENTLY IDC_BUTPEVIOUS IDC_ BUTNEXT IDC_ SUM IDC_ BUTGO 控件属性

View: Report 勾选No sort header 勾选Owenr draw、Disabled

勾选Owenr draw 勾选Owenr draw

勾选Owenr draw、Disabled

勾选Owenr draw

关联变量 int m_Page ClistCtrl m_Grid CbuttonHot m_Currently CbuttonHot m_Previous CbuttonHot m_Next CbuttonHot m_Sum CbuttonHot m_Go

本模块的任务是管理用户在写邮件模块中单击“存草稿”按钮后所保存的邮件。 本模块需要在头文件中声明以下的变量,包括:CToolBar m_ToolBar;//工具栏对象、CReBar m_Rebar;//Rebar条,这两个变量用于创建带背景的工具栏。还有CCustomMenu m_MenuOrder;//排序菜单、CString m_Sql;//记录查询语句、int m_Num;//记录分页码、Cstring m_SortField;//记录排序字段,这三个变量用于排序下拉按钮。

本模块在工具栏中提供了“查看”按钮、“删除”按钮、“清空”按钮和“排序”按钮。用户在邮件的列表视图中选择所需的邮件,通过工具栏选择功能按钮执行相应的操作。工具栏在对话框的OnInitDialog方法中创建,并设置工具栏下拉按钮,设置列表视图控件的扩展风,向列表中插入数据,和计算分页的页码。工具栏中“查看”按钮的单击事件由对话框的中OnLook方法处理,单击“查看”按钮,弹出写邮件模块,在写邮件模块中显示当前邮件的具体信息。工具栏中“删除”按钮的单击事件由对话框的

OnDelete方法处理,当用户在邮件列表图中选定需要删除的邮件,单击“删除”按钮即可。工具栏中“清除”按钮的单击事件由对话框的OnClear方法处理,单击“清除”按钮将删除草稿箱内所有的邮件。

工具栏中的“排序”按钮是下拉式按钮,下拉后分别有“按邮箱”、“按主题”和“按时间” 的选项。“按邮箱”排序的单击事件由对话框的中OnMenureceive方法处理,该事件中根据收件人信息来排列邮件。“按主题”排序的单击事件由对话框的中OnMenumotif方法处理,该事件中根据邮件的主题信息来排列邮件。“按时间”排序的单击事件由对话框的中OnMenutime方法处理,该事件中根据邮件的修改时间信息来排列邮件。此外对话框还要添加AddToGrid函数,将符合条件的邮件记录都插入到列表中。

邮件的列表视图设有“上一页”、“下一页”和“GO”按钮,用户能通过这些按钮查看列表中的所有邮件。“GO”按钮的单击事件由对话框的中OnButgo方法处理,当用户在文本框中输入要跳转的页码后,单击GO按钮,邮件列表视图跳到文本框中输入页。“上一页” 按钮的单击事件由对话框的中OnButprevious方法处理,如果当前邮件列表图为非第一页,单击“上一页” 按钮,邮件列表视图将转到当前页的前一页。“下一页”按钮的单击事件由对话框的中OnButnext方法处理,如果当前邮件列表图为非最后以页,单击“下一页” 按钮,邮件列表视图将转到当前页的后一页。 4.2.4 收件箱模块的详细设计

本模块的是1个基于对话框资源。在该对话框中添加控件,包括1个文本框控件、1个列表视图控件、31个复选框控件和5个按钮控件。控件的属性设置如表4。

表4 收件箱界面控件设置表

控件ID IDC_EDIT1 IDC_LIST1 IDC_CURRENTLY IDC_BUTPEVIOUS IDC_ BUTNEXT IDC_ SUM IDC_ BUTGO 控件属性

无View: Report 勾选No sort header 勾选Owenr draw、Disabled

勾选Owenr draw 勾选Owenr draw

勾选Owenr draw、Disabled

勾选Owenr draw

关联变量 int m_Page ClistCtrl m_Grid CbuttonHot m_Currently CbuttonHot m_Previous CbuttonHot m_Next CbuttonHot m_Sum CbuttonHot m_Go

本模块的任务管理用户接收到的电子邮件。

本模块在工具栏中提供了“查看”按钮、“删除”按钮、“清空”按钮、“排序”按钮和“分类” 按钮,和草稿箱模块的工具栏相比增加了“分类”按钮和“刷新”按钮。

本文来源:https://www.bwwdw.com/article/qj6i.html

Top