VC++收发电子邮件的开发.doc_第1页
VC++收发电子邮件的开发.doc_第2页
VC++收发电子邮件的开发.doc_第3页
VC++收发电子邮件的开发.doc_第4页
VC++收发电子邮件的开发.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计报告 程序设计报告 电子邮件发送和接收程序 的开发 班班 级 级 电子 电子 姓姓 名 名 周周 庆庆 学学 号 号 指导老师 指导老师 惠惠 为为 君君 日日 期 期 20072007 年年 7 7 月月 VC VC 课程设计课程设计 第 1 页 目目 录录 第一章第一章 需需求求分分析析 2 2 1 1 开发背景 2 1 2 功能要求 2 第二章第二章 系统总体分析系统总体分析 2 2 2 1 电子邮件介绍 2 2 2 总体设计方案及思路 3 2 2 1 电子邮件的发送程序 3 2 2 2 电子邮件的接收程序 4 2 3 模块分析 4 2 3 1 电子邮件发送程序的主要模块 5 2 3 2 电子邮件接收程序的主要模块 5 第三章第三章 程序的测试 运行截图 程序的测试 运行截图 5 5 3 1 添加 关于 标签的测试 5 3 2 发送邮件的测试 6 3 3 收取邮件的测试 8 第四章第四章 设设计计总结总结 8 4 1 课程小结 8 4 2 个人小结 9 附录附录 源代码 源代码 9 1 关于 标签的程序代码 9 2 电子邮件发送程序的代码 10 3 附件的代码 13 3 电子邮件接受程序的代码 14 VC VC 课程设计课程设计 第 2 页 第一章 需求分析第一章 需求分析 1 11 1 开发背景 开发背景 随着互联网的不断发展 越来越多的企业单位通过电子邮件来协同工作 打破时间与地 域的限制 大大提高了工作效率 电子邮件已地经成为人们生活中不可缺少的一部分 但是 当前流行的各大邮件客户端软件除了最主要的收发信件之外 功能越来越复杂 但是人们平常真正用到的功能很少 很多功能尤其对于那些计算机知识相对缺乏的人来说 更加显得太过于华丽而不实用 所以这次的 课程设计 我选择了制作一个操作简 单 又可以实现最基本的电子邮件的收发功能的工具 1 21 2 功能要求 功能要求 基本发送和接受邮件的功能 实现通信功能 具有简单 实用 易操作的图形界面 在以上基础上尽量实现发送附件的功能 程序还应可以判断整个过程是否能正常运行 如果不正常运行 必须给出错误信息 第二章 系统总体分析第二章 系统总体分析 2 12 1 电子邮件介绍 电子邮件介绍 电子邮件又称 E mai1 是 种用电子手段提供信息交换的通信方式 它是全球多种网 络上使用最普遍的一项服务 这种非交互式的通信 加速了信息的交流及数据传送 它是 个简易 快速的方法 通过连接全世界的 Internet 实现各类信号的传送 接收 存贮等 处理 将邮件送到世界的各个角落 到目前为止 可以说电子邮件是 Internet 资源使用最多 的一种服务 E mai1 不只局限于信件的传递 还可用来传递文件 声音及图形 图像等不 同类型的信息 电子邮件的处理由两大部分组成 电子邮件发送程序和电子邮件接收程序 电子邮件 发送程序的发送方式有两种 第一种是本地计算机与用户所指定的发送邮件服务器连接 然后通过发送邮件服务器将邮件传递到接收邮件服务器 邮件中包含有信件的主题和内容 等一系列信息 第二种是本地计算机直接与接收电子邮件的服务器相连 并将邮件送入收件 者的邮箱中 电子邮件接收程序则只需要处理本地计算机与存放电子邮件的服务器相连接 并通过帐号和口令从服务器中获取电子邮件 邮件中包含有信件的主题 内容和发送时间 等 VC VC 课程设计课程设计 第 3 页 2 22 2 总体设计方案及思路 总体设计方案及思路 1 1 电子邮件的发送程序电子邮件的发送程序 发送邮件的程序必须能够做 3 件事情 与接收电子邮件的服务器相连接 将相关的信息送入收件人的信箱 程序还应可以判断整个过程是否能正常运行 如果不正常运行 必须给出错误信息 一般情况下 在 中 电子邮件程序的编写是利用 自带的 以及相关的通信协议 SMPT POP3 等来实现的 但是要利用 MAPI 和通信协议实现一 个功能强大的电子邮件管理程序 需要很强的相关专业知识 随着现代软件业的发展 软 件厂商提供了方便 简易 与服务器无关且稳定的电子邮件处理组件 使我们可以在程序 开发语言中调用这些组件 利用很简单的语言实现功能强大的程序 JMail 组件就是一个 很好用的电子邮件程序开发第三方组件 所以这次的课程设计我选择了 组件 JMail 组件中包含许多实现电子邮件处理的属性和方法 只需要在 VC 代码中创建一 个 JMail 组件的对象 调用其中的某些功能 就能很快完成程序的开发 JMail 常用的发 送邮件的基本属性和方法如表 1 所示 表表 1 1 JMailJMail 常用发送邮件的基本属性和方法常用发送邮件的基本属性和方法 方法和属性功能 Body 邮件内容 Charset 字符集 默认为 US ASCII Sendname 发送人姓名 Sender 发送人邮箱地址 Serveraddress SMPT 服务器地址 可制定多个 用分号 分开 并可指定端口 为空白时 JMail 会尝试解决远程邮件服务器 然后直接发 送 Subject 标题 Priority 优先级 1 高优先级 3 普通优先级 5 低优先级 AddAttachment filename ContentType 添加文件附件 AddCustomAttachment filename data 添加自定义附件 AddURLAttachment bstrURL bstrAttachAS bstrAuth 下载并添加一个来自 bstrURL 的附件 BstrAttachAS 指定受到信件的文件名 AddRecipient Email Address 增加一个收件人 AddRecipientEX Email Address name 增加一个带名字的收件人 AppendBodyFromFile filename 将一个文件追加到正文后 AppendText Text 追加信的正文内容 Execute 方法执行发送 Close 方法强制 JMail 关闭缓冲与邮件服务器的连接 VC VC 课程设计课程设计 第 4 页 由于 JMail 是第三方组件 因此 VC 程序要想调用 JMail 对象 就必须先下载 JMail 动态链接库 并在本机中进行注册 具体操作方法如下 打开运行对话框 输入 cmd 打 开命令提示符编辑器 输入如下指令即可注册成功 JMail 组件的安装路径 regsvr32 jmail dll 2 2 电子邮件的接收程序电子邮件的接收程序 接收邮件的程序必须能够做三件事 与存放电子邮件的服务器相连接 读取相关的信件信息 并存放与本地计算机中 程序还将判断整个过程是否能正常运行 如果不正常运行 必须给出错误信息 与电子邮件发送程序的编写相同 我还是采取 VC 语言和 JMail 组件相结合的方法来 实现邮件的收取 JMail 常用的接收邮件的基本属性和方法如表 2 所示 表表 2 2 JMailJMail 常用接收信件的基本属性和方法常用接收信件的基本属性和方法 方法和属性功能 Body 邮件内容 Charset 字符集 默认为 US ASCII Date 信件发送日期 MailServer 邮箱所在的服务器 Subject 标题 Timeout 连接服务器的超时限制 Connect 连接服务器 需要参数 帐号 口令 服 务器地址 端口 2 32 3 模块分析 模块分析 电子子邮件接受方式程序主要由以下两个大的模块构成 发送邮件模块和收取邮件模 块 其功能模块如图 1 所示 电子邮件客户应用系统 发 送 邮 件 接 收 邮 件 VC VC 课程设计课程设计 第 5 页 图图 1 1 电子邮件功能模块图电子邮件功能模块图 1 1 电子邮件发送程序的主要模块电子邮件发送程序的主要模块 电子邮件发送程序主要由以下几个模块组成 邮件服务器 用于填写收件人的邮箱服务器 可以不填 收件人信箱 用于填写收件人的邮箱名 发件人信箱 用于填写发件人的邮箱名 主题 用于填写信件主题 正文 用于写入信件正文 退出 用于退出发件程序 发送 用于发送邮件 关于 用于显示软件开发的相关信息 附件 可以手动添加附件并完成发送 该功能正在进一步完善中 为本小组另行添加的功能 2 2 电子邮件接收程序的主要模块电子邮件接收程序的主要模块 电子邮件接收程序主要由以下几个模块组成 邮件服务器 用于填写需要收取信件信箱的服务器 帐号 用于填写需要收取信件的邮箱帐号 口令 用于填写需要收取信件的邮箱密码 邮件列表 显示邮箱中所有邮件的列表 正文 当选中邮件列表中任一邮件时 显示该封信件的具体内容 退出 用于退出接收邮件程序 收取 用于收取信件 第三章 程序测试 运行截图 第三章 程序测试 运行截图 3 13 1 添加 添加 关于关于 标签的测试标签的测试 在原设计的基础上我添加了一个 关于 的标签 点击该按钮会弹出一个小的对话框 其中的内容包括本小组的成员 程序开发时间以及一些关于邮件方面的相关帮助信息 程 序的运行结果如图 1 所示 VC VC 课程设计课程设计 第 6 页 图图 2 2 关于关于 程序主界面程序主界面 3 23 2 发送邮件的测试 发送邮件的测试 图图 3 3 邮件发送主界面 不带附件 邮件发送主界面 不带附件 VC VC 课程设计课程设计 第 7 页 图图 4 4 发送邮件程序主界面 加载附件 发送邮件程序主界面 加载附件 图图 5 5 发送邮件程序主界面 带附件 发送邮件程序主界面 带附件 VC VC 课程设计课程设计 第 8 页 3 33 3 收取邮件的测试 收取邮件的测试 图图 6 6 收取电子邮件程序主界面收取电子邮件程序主界面 第四章 设计总结第四章 设计总结 4 14 1 课程小结 课程小结 在邮件发送程序中 用户可以利用 SMPT 服务器向朋友发送电子邮件 也可以直接尝试 链接朋友的 E mail 信箱所在的服务器 这次课程设计我所利用的 JMail 组件封装了很强的 电子邮件处理功能 如附件传递 用户的跟踪服务 发布产品信息 以及电子报刊处理等 功能 在邮件接受程序中 用户可以向 POP3 服务器收取电子邮件 用户打开邮箱后 将利用 JMail 组件创建的对象指针遍历邮箱中的所有邮件 并将邮件信息下载存放于本地计算机 中 利用 List 控件的扩展属性显示邮件的正文内容 目前我所做的这个程序还不够完整 还存在着很多的不足和不完善的地方 归纳起来 体现在以下几个方面 VC VC 课程设计课程设计 第 9 页 软件的功能趋于简单 真正的邮件收发工具软件包括很多方面的信息 而不仅仅局 限于发送邮件和收取邮件 真正的邮件服务软件还包括邮件导入 邮件导出 文本编辑 查找与撤消 通讯簿 通讯规则等等功能 软件的图形操作功能缺乏 目前系统中对邮件附件的添加 删除功能都没有图形快 捷操作 只能通过改变源程序中的代码达到添加附件的目的 而且由于时间和知识的欠缺 整个系统的界面显得过于单调 缺乏动态显示效果 如果能结合其它界面美化工具 使得 界面更人性化 那就更好了 4 24 2 个人小结 个人小结 经过不懈的努力 终于完成了这次的课程设计 其实在做这次 VC 程序设计实验之前 我基本上没有真正意义上的接触过 VC 程序案例的设计和开发 只是通过课堂了解了一些 关于 VC 的最基本的知识 所以这次实验是在边学习边实践的基础上完成的 由于知识的 不足 做的结果自己不是很满意 与自己原来的设想也有些差距 但是我也从这两个星期 的设计和制作过程中学到了很多知识 对自己以后的专业学习甚至将来的工作都有很大的 帮助 附录 源代码 附录 源代码 1 1 关于关于 标签的程序代码标签的程序代码 1 1 往头文件 StdAfx h 中添加下列代码 define CRLF x0d x0a 注意这两行必须添加注意这两行必须添加 define CRLF2 CRLF CRLF 2 2 主要代码如下 BOOL CAboutDlg OnInitDialog CDialog OnInitDialog TODO TODO AddAdd extraextra initializationinitialization herehere m strEditHelp 相关帮助信息 CRLF CRLF 一 发送邮件服务器和发信人信箱有密切关系 假如你的信箱为 loop 则发送邮件服务器一般为 当然这也不是绝对的 你可以到你的邮件相关网 站查询 不知道服务器名的话也可以不填 CRLF CRLF 二 发信信箱格式比较灵活 如下两种格式均为合法的 1 在你的 E Mail 首尾 加小于大于符号 2 直接填写你的 E Mail loomman VC VC 课程设计课程设计 第 10 页 CRLF CRLF 三 接受信箱可以为多个 中间用分号 隔开 例如 Pookie snuggles 某些信箱前面的部分字符串是收信人名称 例如上面的 Pookie 可以省略不写 例如下面一 行和上面一行是等价的 它们都是可以接受的信箱输入格式 CRLF CRLF 四 邮件主题 当然就是邮件的标题了 你可以随意输入自己喜爱的标题 CRLF CRLF 五 邮件正文就是你要发给对方的信息 CRLF CRLF 六 最后不得不提一下 由于当今好多发送邮件服务器都要求身份验证 也就 是需要提供的你的信箱密码 鉴于技术问题 这类信箱本程序暂时不支持 CRLF CRLF 周清 周庆 蒯志刚 于雯 CRLF 2007 年 7 月 CRLF UpdateData FALSE UpdateUpdate thethe DialogDialog return TRUE returnreturn TRUETRUE unlessunless youyou setset thethe focusfocus toto a a controlcontrol EXCEPTION EXCEPTION OCXOCX PropertyProperty PagesPages shouldshould returnreturn FALSEFALSE 2 2 发送邮件程序代码 发送邮件程序代码 1 1 往头文件 StdAfx h 中添加 JMail 对象的声明 这样才能在整个程序中应用 JMail 对 象 代码如下 import C jmail jmail dll 显示指定显示指定 JMailJMail 动态链接库动态链接库 using namespace jmail 定义程序中定义程序中 JMailJMail 对象的名称对象的名称 2 2 头文件 MailServer h 利用 ClassWizard 类项导添加退出应用程序的函数 ExitInstnace 源代码如下 Overrides ClassWizard generated virtual function overrides AFX VIRTUAL CMailServerApp public virtual BOOL InitInstance virtual int ExitInstance AFX VIRTUAL VC VC 课程设计课程设计 第 11 页 3 3 源文件 MailServer cpp 类 CMailServerApp 的实现文件 1 1 由于程序中应用了 JMail 组件 因此必须在 InitInstance 函数中添加如下代码 进 行应用程序的初始化 BOOL CMailServerApp InitInstance AfxEnableControlContainer CoInitialize NULL ifdef AFXDLL Enable3dControls Call this when using MFC in a shared DLL 2 2 应用程序时 在 ExitInstance 函数中添加释放各变量的代码 应用程序退出时 int CMailServerApp ExitInstance TODO Add your specialized code here and or call the base class return CWinApp ExitInstance CoUninitialize 4 4 MailServerDlg h 中 CMailServerDlg 类的接口 1 1 在头文件 MailServerDlg h 中 添加各控件的控件变量 如下表所示 控件控件变量 IDC EDIT MAILSERVERm strmailserver IDC EDIT RECIPIENTSm strrecipients IDC EDIT SENDERm strsender IDC EDIT SUBJECTm strsubject IDC EDIT BODYm strbody 2 2 利用 ClassWizard 添加 IDOK 控件的 ON BN CLICKED 事件函数 代码如下 Protected AFX MSG CMailServerDlg Afx msg void OnSend AFX MSG 3 3 源文件 MailServerDlg cpp 类 CMailServerDlg 的实现文件 打开 MailServerDlg cpp 文件 添加发送邮件函数 OnSend 的代码如下 发送邮件程序发送邮件程序 void CMailServerDlg OnSend TODO Add your control notification handler code here UpdateData 获取 Edit 控件中的字符串 m strmailserver TrimLeft VC VC 课程设计课程设计 第 12 页 m strmailserver TrimRight m strrecipients TrimLeft m strrecipients TrimRight m strsender TrimLeft m strsender TrimRight 判断 Edit 控件中的字符串是否有效 if m strrecipients GetLength 3 AfxMessageBox 请填写正确的收件人信箱 return if m strsender GetLength From LPCTSTR m strsender 发件人姓名 pMessage FromName 我的名字 添加收件人 pMessage AddRecipient LPCTSTR m strrecipients 优先级设置 1 5 逐次降低 3 为中级 pMessage Priority 3 编码方式设置 默认是 iso 8859 1 pMessage Charset GB2312 主题 pMessage Subject LPCTSTR m strsubject 正文 pMessage Body LPCTSTR m strbody 开始发送 pMessage Send LPCTSTR m strmailserver VARIANT FALSE pMessage Release AfxMessageBox 发送成功 捕捉异常 catch com error e CString strErr VC VC 课程设计课程设计 第 13 页 strErr Format 错误信息 s r n 错误描述 s LPCTSTR e ErrorMessage LPCTSTR e Description AfxMessageBox strErr 3 3 附件实现的代码 附件实现的代码 附件发送的实现 附件发送的实现 1 1 首先在 CMailServerDld 类中定义几个对象 public CString str CString tr BOOL strbool bstr t bstr 2 2 加载文件 void CMailServerDlg OnBtAddfile TODO Add your control notification handler code here CFileDialog cg TRUE if cg DoModal IDOK strbool true else strbool false cg DoModal str cg GetPathName MessageBox str 3 3 发送附件 bstr str AllocSysString CString 类型转换成 bstr t 类型 if strbool true 判断有没有打开附件 bstr t bstrCID pMessage AddAttachment bstr VARIANT TRUE 开始发送 带附件 pMessage Send LPCTSTR m strmailserver VARIANT FALSE pMessage Release AfxMessageBox 发送成功 带附件 else VC VC 课程设计课程设计 第 14 页 开始发送 不带附件 pMessage Send LPCTSTR m strmailserver VARIANT FALSE pMessage Release AfxMessageBox 发送成功 不带附件 捕捉异常 catch com error e CString strErr strErr Format 错误信息 s r n 错误描述 s LPCTSTR e ErrorMessage LPCTSTR e Description AfxMessageBox strErr 4 4 接受邮件程序代码 接受邮件程序代码 1 1 往头文件 StdAfx h 中添加 JMail 对象的声明 这样才能在整个程序中应用 JMail 对象 代码如下 显示指定 JMail 动态链接库 import C jmail jmail dll 定义程序中 JMail 对象的名称 using namespace jmail 2 2 头文件 MailServer h 利用 ClassWizard 类项导添加退出应用程序的函数 ExitInstnace 源代码如下 Overrides ClassWizard generated virtual function overrides AFX VIRTUAL CMailServerApp public virtual BOOL InitInstance virtual int ExitInstance AFX VIRTUAL 3 3 源文件 MailRecieve cpp 类 CMailRecieveApp 的实现文件 1 1 由于程序中应用了 JMail 组件 因此必须在 InitInstance 函数中添加如下代码 进行应用程序的初始化 BOOL CMailRevieveApp InitInstance AfxEnableControlContainer CoInitialize NULL ifdef AFXDLL Enable3dControls Call this when using MFC in a shared DLL VC VC 课程设计课程设计 第 15 页 2 2 应用程序时 在 ExitInstance 函数中添加释放各变量的代码 应用程序退出时 int CMailRecieveApp ExitInstance TODO Add your specialized code here and or call the base class return CWinApp ExitInstance CoUninitialize 4 4 MailRecieveDlg h 中 CMailRecieveDlg 类的接口 1 1 在头文件 MailRecieveDlg h 中 添加各控件的控件变量 如下表所示 控件控件变量 IDC EDIT MAILSERVERm strmailserver IDC EDIT MESSAGESm strcltmessageslist IDC EDIT PASSWORDm strpassword IDC EDIT USERIDm struserid IDC EDIT BODYm strbody 2 2 利用 ClassWizard 添加 IDOK 控件的 ON BN CLICKED 事件函数 添加 List 控件的 LVN ITEMCHANGE 事件函数 代码如下 Protected AFX MSG CMailServerDlg Afx msg void OnRecieve afx msg void OnShowBody NMHDR Pnmhdr lresult pResult AFX MSG 3 3 源文件 MailRecieverDlg cpp 类 CMailRecieveDlg 的实现文件 向 MailServerDlg cpp 文件中添加初始化对话框函数 OnInitDialog 的代码 OnRecieve 的 代码和显示邮件正文函数 OnShowBody 的代码 BOOL CMailRecieveDlg OnInitDialog TODO Add extra initialization here 初始化对话框的函数 升级列表控件 SendMessage m ctlmessagelist m hWnd LVM SETEXTENDEDLISTVIEWSTYLE LVS EX F ULLROWSELECT LVS EX FULLROWSELECT 显示控件列表 m ctlmessagelist InsertColumn 0 发件人 LVCFMT LEFT 120 m ctlmessagelist InsertColumn 1 主题 LVCFMT LEFT 350 m ctlmessagelist InsertColumn 2 日期 LVCFMT LEFT 100 return TRUE return TRUE unless you set the focus to a control 接收邮件函数 VC VC 课程设计课程设计 第 16 页 void CMailRecieveDlg OnRecieve TODO Add your control notification handler code here 接受邮件的函数接受邮件的函数 UpdateData 格式化 Edit 控件中的字符串 m strmailserver TrimLeft m strmailserver TrimRight m struserid TrimLeft m struserid TrimRight m strpassword TrimLeft m strpassword TrimRight 判断帐号口令是否存在 if m strmailserver GetLength 0 AfxMessageBox 邮件服务器不能为空 return if m struserid GetLength Timeout 30 链接邮件服务器 110 为 POP3 默认端口号 pPOP3 Connect LPCTSTR m struserid LPCTSTR m strp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论