VC收发电子邮件开发_第1页
VC收发电子邮件开发_第2页
VC收发电子邮件开发_第3页
VC收发电子邮件开发_第4页
VC收发电子邮件开发_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、VC + +程序设计报吿电子邮件发送和接收程序的开发班级: B电子0 5 1,姓名: 周 庆学号:05106203,18指导老师:惠为君日 期:2007年7月第一章需求分析21.1开发背景21. 2功能要求2第二章系统总体分析22. 1电子邮件介绍22. 2总体设计方案及思路32. 2. 1电子邮件的发送程序32. 2.2电子邮件的接收程序42. 3模块分析42. 3. 1电子邮件发送程序的主要模块52. 3.2电子邮件接收程序的主要模块5第三章程序的测试(运行截图)53.1添加“关于”标签的测试53. 2发送邮件的测试63.3收取邮件的测试8第四章设计总结84. 1课程小结84. 2个人小结

2、9附录(源代码)91 “关于”标签的程序代码92电子邮件发送程序的代码103附件的代码133电子邮件接受程序的代码14第一章、需求分析1.1.开发背景随着互联网的不断发展,越来越多的企业单位通过电子邮件来协同工作,打破时间与地 域的限制,大大提高了工作效率。电子邮件已地经成为人们生活中不可缺少的一部分。但是,当前流行的各大邮件客户端软件除了最主要的收发信件之外,功能越来越复杂, 但是人们平常真正用到的功能很少,很多功能尤英对于那些计算机知识相对缺乏的人来说, 更加显得太过于华丽而不实用。所以这次的VC+ +课程设计,我选择了制作一个操作简单, 又可以实现最基本的电子邮件的收发功能的工具。12.

3、功能要求 基本发送和接受邮件的功能。 实现通信功能。 具有简单、实用、易操作的图形界而。 在以上基础上尽量实现发送附件的功能。 程序还应可以判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。第二章.系统总体分析2.1.电子邮件介绍电子邮件又称E-mail,是一种用电子手段提供信息交换的通信方式。它是全球多种网 络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是一个 简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理, 将邮件送到世界的齐个角落。到目前为I卜,可以说电子邮件是Internet资源使用最多的一种 服务,E

4、-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的 信息。电子邮件的处理由两大部分组成:电子邮件发送程序和电子邮件接收程序。电子邮件发 送程序的发送方式有两种:第一种是本地计算机与用户所指左的发送邮件服务器连接,然后 通过发送邮件服务器将邮件传递到接收邮件服务器,邮件中包含有信件的主题和内容等一系 列信息。第二种是本地汁算机宜接与接收电子邮件的服务器相连,并将邮件送入收件者的邮 箱中。电子邮件接收程序则只需要处理本地计算机与存放电子邮件的服务器相连接,并通过 帐号和口令从服务器中获取电子邮件,邮件中包含有信件的主题、内容和发送时间等。2.2.总体设计方案及思路电子邮

5、件的发送程序发送邮件的程序必须能够做3件事情: 与接收电子邮件的服务器相连接; 将相关的信息送入收件人的信箱; 程序还应可以判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。一般情况下,在VC+ +中,电子邮件程序的编写是利用W i n d o w s自带的MAP I以及相关的通信协议SMPT/P0P3等来实现的。但是要利用MAPI和通信协议实现一个功能 强大的电子邮件管理程序,需要很强的相关专业知识。随着现代软件业的发展,软件厂商提 供了方便、简易,与服务器无关且稳左的电子邮件处理组件,使我们可以在程序开发语言中 调用这些组件,利用很简单的语言实现功能强大的程序。JMa订组件就是

6、一个很好用的电子 邮件程序开发第三方组件。所以这次的课程设计我选择了JMa i 1组件。JMa订组件中包含许多实现电子邮件处理的属性和方法。只需要在VC+代码中创建一个 JMail组件的对象,调用其中的某些功能,就能很快完成程序的开发。JMail常用的发送邮 件的基本属性和方法如表1所示。表1 JMail常用发送邮件的基本属性和方法方法和属性功能Body邮件内容Charset字符集,默认为“US-ASCII”Sendname发送人姓名Sender发送人邮箱地址ServeraddressSMPT服务器地址,可制左多个,用分号分 开,并可指泄端口:为空白时,JMail会 尝试解决远程邮件服务器,然

7、后直接发送。Subject标题Priority优先级(1:髙优先级;3:普通优先级。5:低优先级)AddAttachment( ufilename , ContentType)添加文件附件AddCustomAttachment ( 44filename , data)添加自定义附件AddURLAttachment(“bstrURL” , bstrAttachAS” , bstrAuth)卜-载并添加一个来自bstrURL的附件, BstrAttachAS指泄受到信件的文件名。AddRecipient( Email-AddressM )增加一个收件人AddRecipientEX( 44Email

8、-Address , namev )增加一个带名字的收件人AppendBodyFromFile( ufilename)将一个文件追加到正文后AppendText( Text)追加信的正文内容Execute 0 方法执行发送Close 0方法强制JMail关闭缓冲与邮件服务器的连接由于JMail是第三方组件,因此VC卄程序要想调用JMail对象,就必须先下载JMail 动态链接库,并在本机中进行注册。具体操作方法如下:打开运行对话框,输入cmd,打开命令提示符编辑器,输入如下指令即可注册成功:(JMail组件的安装路径)regsvr32 jmail.dll(2)电子邮件的接收程瘵接收邮件的程序必

9、须能够做三件事: 与存放电子邮件的服务器相连接; 读取相关的信件信息,并存放与本地计算机中: 程序还将判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。与电子邮件发送程序的编写相同,我还是采取VC卄语言和JMail组件相结合的方法来 实现邮件的收取。JMa订常用的接收邮件的基本属性和方法如表2所示。表2 JMail常用接收信件的基本属性和方法方法和属性功能Body邮件内容Charset字符集,默认为(CS-ASCII)Date信件发送日期MailServer邮箱所在的服务器Subject标题Timeout连接服务器的超时限制Connect 0连接服务器,需要参数:帐号、口令、服务

10、器地址.端口2.3.模块分析电子子邮件接受方式程序主要由以下两个大的模块构成:发送邮件模块和收取邮件模块。其功能模块如图1所示:电子邮件客户应用系统 图1电子邮件功能模块图11 /2发接送收(1)电子邮件发送程原的主要模块电子邮件发送程序主要由以下几个模块组成: 邮件服务器:用于填写收件人的邮箱服务器(可以不填): 收件人信箱:用于填写收件人的邮箱名: 发件人信箱:用于填写发件人的邮箱纭: 主题:用于填写信件主题。 正文:用于写入信件正文; 退出:用于退岀发件程序; 发送:用于发送邮件: 关于:用于显示软件开发的相关信息。 附件:可以手动添加附件并完成发送(该功能正在进一步完善中)。 (为本小

11、组另行添加的功能)(2)电子邮件接收程原的主要模块电子邮件接收程序主要由以下几个模块组成: 邮件服务器:用于填写需要收取信件信箱的服务器: 帐号:用于填写需要收取信件的邮箱帐号; 口令:用于填写需要收取信件的邮箱密码; 邮件列表:显示邮箱中所有邮件的列表: 正文:当选中邮件列表中任一邮件时,显示该封信件的具体内容: 退岀:用于退出接收邮件程序; 收取:用于收取信件。第三章.程偉测试(运行截3.1.添加关于标签的测试在原设计的基础上我添加了一个“关于”的标签,点击该按钮会弹出一个小的对话框, 其中的内容包括本小组的成员、程序开发时间以及一些关于邮件方而的相关帮助信息。程序 的运行结果如图1所示。

12、2 “关于”程序主界面3.2.发送邮件的测试图3邮件发送主界面(不带附件)Wail Server收件服冬誥(SMTP )r邮件服备备可以不境牧件人由B箱35037171 Gqq. com发件人邮箱|zhouqingl93T311Q126. com主题|激试发进由1?件正文发送附件I关于I退出4发送邮件程原主界面(加载附件)图5发送邮件程序主界面(带附件)3.3.收取邮件的测试MailRecieve邯件眼翁器(F0P3)帙号5&13pep qq ccrr.吹职|476162965(?qq con很出40E83D505Gqq. con回史好啊2007-OT-22ti nh*nO5270126. c

13、cm7hoaang2007-Tf-Z4t i ah4nO527l 2G. ccrzhzK2007-C7-24tianhen0527126. can?00T-TfT-?511 cjthenOS2?l 26. ccrse2007-OT-25tiaritieii0527126. ccm福住2007-OT-25tiiXthanO5270q fTisdfzdfdzfdzZ007-OT-Z5t i anl5nOS27l 26. ccnLkihklk2007-OT-25ti ftnhanO527Q126 ccmjisj aw2007-CfT-2611 ahcTiU527Sl 26. : n2007-OT-2

14、6日期IBI一 二旷1得程还. q子由瞄U勺罠芝才按乜淀穴6收取电子邮件程凉主界面第四章.设计总结4.1. 课程小结在邮件发送程序中,用户可以利用SMPT服务器向朋友发送电子邮件,也可以直接尝试 链接朋友的E-mail信箱所在的服务器。这次课程设汁我所利用的JMail组件封装了很强的 电子邮件处理功能,如附件传递、用户的跟踪服务、发布产品信息,以及电子报刊处理等功 能。在邮件接受程序中,用户可以向POP3服务器收取电子邮件。用户打开邮箱后,将利用 JMail组件创建的对象指针遍历邮箱中的所有邮件,并将邮件信息下载存放于本地讣算机 中,利用List控件的扩展属性显示邮件的正文内容。目前我所做的这

15、个程序还不够完整,还存在着很多的不足和不完善的地方。归纳起来体 现在以下几个方而: 软件的功能趋于简单,真正的邮件收发工具软件包括很多方而的信息,而不仅仅局限 于发送邮件和收取邮件。真正的邮件服务软件还包括邮件导入、邮件导出、文本编借(查找 与撤消)、通讯簿、通讯规则等等功能。 软件的图形操作功能缺乏,目前系统中对邮件附件的添加、删除功能都没有图形快捷 操作,只能通过改变源程序中的代码达到添加附件的目的。而且由于时间和知识的欠缺,整 个系统的界而显得过于单调,缺乏动态显示效果。如果能结合其它界而美化工具,使得界面 更人性化,那就更好了。4.2. 个人小结经过不懈的努力,终于完成了这次的课程设计

16、。貝实在做这次vc+程序设汁实验之前, 我基本上没有真正意义上的接触过VC+程序案例的设il和开发,只是通过课堂了解了一些 关于VC+的最基本的知识,所以这次实验是在边学习边实践的基础上完成的。由于知识的 不足,做的结果自己不是很满意,与自己原来的设想也有些差距。但是我也从这两个星期的 设计和制作过程中学到了很多知识,对自己以后的专业学习甚至将来的工作都有很大的帮 助。附录(源代码):1、关于标签的程序代码(1) 往头文件StdAfx. h中添加下列代码:define CRLF xOdxOa/注意这两行必须添加define CRLF2 CRLF CRLF(2) 主要代码如下:BOOL CAbo

17、utDlg:OnInitDialog()CDialog::OnInitDialog() o/ TODO: Add extra initialization herem_strEditHelp=相关帮助信息:”CRLFCRLF” 一、发送邮件服务器和发信人信箱有密切关系,假如你的信箱为, 则发送邮件服务器一般为:smtp. qq. com,当然这也不是绝对的,你可以到你的邮件相关网 站查询。不知道服务器名的话也可以不填!CRLFCRLF 二、发信信箱格式比较灵活,如下两种格式均为合法的:1在你的E-Mai 1首尾 加小于大于符号: 2 直接填写你的 E-Mail: loomm

18、ansina. com CRLFCRLF三、 接受信箱可以为多个,中间用分号;隔开,例如:Pookie snuggles o 某些信箱前而的部分字符串是收信人名称,例如上面的Pookie可以省略不写,例如下而一 行和上面一行是等价的,它们都是可以接受的信箱输入格式。。 0 CRLFCRLF 四、邮件主题,当然就是邮件的标题了,你可以随意输入自己喜爱的标题。CRLFCRLF 五、邮件正文就是你要发给对方的信息。CRLFCRLF 六、最后不得不提一下,由于当今好多发送邮件服务器都要求身份验证,也就是 需要提供的你的信箱密码,鉴于技术问题,这类信箱本程序暂时不支持。

19、CRLFCRLF周淸周庆蒯志刚于雯CRLF2007年7月CRLFoUpdateData(FALSE)o / Update the Dialogreturn TRUE。 / return TRUE unless you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSE2. 发送邮件程序代码:(1) 往头文件StdAfx. h中添加JMail对象的声明,这样才能在整个程序中应用JMail对 象代码如下:Simport /ZC: jmailjma订dll 显示指定JMail动态链接库 using

20、 namespace jmailo /定义程序中JMail对象的名称(2) 头文件Ha订Server, h,利用ClassWizard类项导添加退岀应用程序的函数 Exitlnstnace 0.源代码如下:/ Overrides/ ClassWizard generated virtual function overrides/AFX.VIRTUAL(CMailServerApp)public:virtual BOOL Initlnstance 0 virtual int Exitinstance 0 o/AFX_VIRTUAL(3) 源文件 MailServer. epp,类 CMailSe

21、rverApp 的实现文件.1) 由于程序中应用了 JMail组件,因此必须在Initlnstance()函数中添加如下代码,进 行应用程序的初始化.BOOL CMailServerApp::Initlnstance0AfxEnableControlContainer 0。:Coinitialize(NULL)o#ifdef .AFXDLLEnable3dControls 0 o/ Call this when using MFC in a shared DLL2) 应用程序时,在ExitlnstanceO函数中添加释放各变量的代码.应用程序退出时int CMailServerApp::Exi

22、tlnstanceO/ TODO: Add your specialized code here and/or call the base classreturn CWinApp::ExitlnstanceO o:CoUninitialize 0。(4)MailServerDlg. h 中,CMailServerDlg 类的接】1)在头文件MailServerDlg. h中,添加各控件的控件变量,如下表所示.控件控件变量IDC EDIT MAILSERVERm strmailserverIDC EDIT RECIPIENTSm strrecipientsIDCJDIT.SENDERm strs

23、enderIDCJDIT.SUBJECTm strsubjectIDC.EDIT.BODYm strbody2)利用ClassWizard添加IDOK控件的ON.BN.CLICKED事件函数,代码如下:Protected:/AFX.MSG(CMailServerDlg)Afx_msg void OnSendO /AFX_MSG3) 源文件MailServerDlg. cpp,类CMailServerDlg 的实现文件打开Ma订ServerDlg. cpp 文件,添加发送邮件函数OnSendO的代码如下:发送邮件程序void CMailServerDlg::OnSendO/ TODO: Add

24、your control notification handler code hereUpdateDataO o/获取Edit控件中的字符串m_strmai1server TrimLeft 0 om_strmai1server TrimRight 0 om_strrecipients TrimLeft0。m_strrecipients TrimRight0。m_strsender TrimLeft 0。m_strsender TrimRight 0。/判断Edit控件中的字符串是否有效if(m_strrecipients GetLength03)AfxMes sageBox (请填写正确的收件

25、人信箱)。returnoif (m_strsender GetLength0 From=(LPCTSTR) m_strsenderc/发件人姓名 pMessageFromName我的名字。/添加收件人pMessage-AddRecipient(LPCTSTR)m_strrecipients,、“)。 优先级设置,15逐次降低,3为中级pMessage-Priority=3。/编码方式设置,默认是iso-8859-lpMessage-Charset = “GB2312。主题pMessage-Subject = (LPCTSTR) mstrsubjecto/正文pMessage-Body = (L

26、PCTSTR) m_strbody0/开始发送pMessage-Send( (LPCTSTR) m_strma 订 sem, VAR I ANT_FALSE)。 pMessage Release 0。AfxMessageBox C发送成功!)。/捕捉异常catch (_com_error e)CString strErrastrErr. Format C错 误 信 息:%srn 错 误描述(LPCTSTR) e. ErrorMessageO , (LPCTSTR) e. Description0) oAfxMessageBox(strErr)o3. 附件实现的代码:附件发送的实现;(1) 首先

27、在CMailServerDld类中定义几个对象。public:CString stroCString troBOOL strboolo_bstr_t bstro(2) 加载文件:void CMailServerDlg::OnBtAddfileO/ TODO: Add your control notification handler code hereCFileDialog eg (TRUE)o辻(eg. DoModalO =ID0K) strbool=trueelse strbool二false。eg. DoModal0。str=cg GetPathName0MessageBox(str)o

28、(3)发送附件:bstr=str. AllocSysStringO。/CString 类型转换成_bstr_t 类型if (strbool=true)/判断有没有打开附件_bstr_t bstrCID = pMessage-AddAttachment ( bstr, VARIANT_TRUE, 开始发送(带附件)pMessage-Send(LPCTSTR) m_strmailserver, VARIANT_FALSE)。 pMessage Release 0。AfxMessageBox发送成功(带附件)!)。else开始发送(不带附件) pMessage-Send (LPCTSTR) mstr

29、mailserver, VARIANT_FALSE) pMessage Release 0。AfxMessageBoxC发送成功(不带附件)!)。捕捉异常catch (_com_error e)CString strErrostrErr. Format C错误信息:%srn 错误描述:%s (LPCTSTR) e. ErrorMessage 0 , (LPCTSTR) e. Description0)。AfxMessageBox (strErr) o4. 接受邮件程摩代码:(1)往头文件StdAfx.h中添加JMail对象的声明,这样才能在整个程序中应用JMail 对象代码如下:/显示指定JM

30、ail动态链接库Afx_msg void OnRecieveO oafx_msg void OnShowBody(NMHDR* Pnmhdr, lresult* pResult)o/AFX_MSG3)源文件 MailRecieverDlg. cpp,类 CMa订RecieveDlg 的实现文件.向 MailServerDlg. cpp文件中添加初始化对话框函数OnlnitDialogO的代码、OnRecieveO的 代码和显示邮件正文函数OnShowBody ()的代码:BOOL CMailRecieveDlg::OnlnitDialogO/ TODO: Add extra initializ

31、ation here/初始化对话框的函数/升级列表控件:SendMessage(m_ctlmessagelist. m.hWnd, LVM.SETEXTENDEDLISTVIEWSTYLE,LVS.EX.F ULLROWSELECT,LVS_EX_FULLROWSELECT)。/显示控件列表m_ctlmessagelist. InsertColumn(0,,z发件人:LYCFMTJLEFT, 120)。m_ctlmessagelist. InsertColumn(1,主题丄VCFMT_LEFT, 350)。m_ctlmessagelist. InsertColumn(2,日期LVCFMT_LE

32、FT, 100)。return TRUEo / return TRUE unless you set the focus to a control:/接收邮件函数void CMailRecieveDlg::OnRecieveO/ TODO: Add your control notification handler code here接受邮件的函数UpdateDataO。/格式化Edit控件中的字符串m_strmai1server TrimLeft 0。m_strmailserver TrimRight 0 。m_struserid TrimLeft()。m_struserid TrimRig

33、ht0。m_strpassword TrimLeft 0。m_strpassword TrimRight()。判断帐号口令是否存在if(m_strmailserver GetLengthO =0)Af xMes sag eBox (,?邮件服务器不能为空)。returnoif (m_struserid GetLengthOTimeout =30o/链接邮件服务器,110为POP3默认端口号pP0P3-Connect(LPCTSTR)m_struserid ,(LPCTSTR)m_strpassword,(LPCTSTR)m_strmailserver, 110)o获取信件pMessages=pP0P3-Messages/已下载的邮件的实际个数(因为第0个ITEM是未用的,所以减一)long ICount =(pP0P3-Messages)-Count-loif(ICount = 0)AfxMessageBox (*信箱为空)。elsejmail:IMe

温馨提示

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

评论

0/150

提交评论