1、6. 总结 157. 参考文献 151. 前言电子邮件(简称E-mai1)又称电子信箱,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送。通过Internet,实现各类信号的传送、接收、存储等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是一种“终端到终端”的服务,是被称为“存储转发式”服务。这正是电子信箱系统的核心,利用存储转发可进行非实时通信,属异步通信方式。即信件
2、发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时间和空间限制。电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。JMail组件功能强大,可以轻松的完成邮件发送,接收,加密,集群传输等工作。本软件采用JMail组件完成大部分功能。2. 系统功能和使用说明2.1 系统功能系统实现的主要功能:(1)邮件的发送(2)邮件的接收(3)添加附件(4)下载附件
3、2.2 使用说明本软件使用C+语言,Microsoft Visual C+ 6.0集成开发环境,JMail 组件开发。在Windows 2000 及以上版本的Windows操作系统中运行。3. 系统设计3.1 邮件发送模块用户选择发送邮件时,需要填写相关账户信息和邮件服务器(SMTP服务器)信息。向服务器发出申请前对用户输入的数据进行简单的合法性检查。邮件发送模块的流程图如图3.13.2 邮件接收模块用户选择接收邮件时,填写相关账户信息和邮件服务器信息(POP服务器)信息。邮件接收模块的流程图如图3.2 4. 系统实现在对话资源上能添加多个控件,同时利用类向导为编辑控件及列表控件添加变量、系统
4、控件ID、标题及对应的变量名,如表4.1。软件主界面如图4.1。控 件ID作 用变 量 类 型变 量 名IDC_NAME接受发信人的昵称CStringm_nameIDC_SENDAD发信人的邮箱地址m_sendadIDC_PASSWORD密码m_passwordIDC_SMTPSMTP服务器m_smtpIDC_POPPOP3服务器m_pop3IDC_REVAD收信人地址m_revadIDC_SUBJECT标题m_subjectIDC_BODY正文m_bodyIDC_LIST显示附件情况CListCtrlm_list 表 4.1 控件表创建了上面的控件并且为控件添加变量以后,就可以进行相应的模块
5、设计,包括收信和写信两个功能。对于收信和写信,首先要单击“写信”按钮或者“收信”按钮,使得相应的控件可用,然后填写上相应的参数,单击“确定”按钮进行收信和发信。4.2 发信模块设计发信模块是系统最重要的功能之一,前面已经介绍了发信的主要实现过程,利用SMTP协议进行与服务器之间的对话,从而发送整个信件。本软件利用了JMail组件的功能来完成的。在本模块中单击“确定”按钮,实现发送过程。 图 4.1 主界面(1)在类向导生成的CTestDlg添加一个BOOL型变量flag,用来保存是发信还是收信。利用类向导添加单击“写信”按钮的消息映射代码。“写信”按钮的主要功能是控制各个控件的状态。void
6、CEmailClientDlg:OnSend() GetDlgItem(IDOK)-EnableWindow(TRUE); GetDlgItem(IDC_NAME)- GetDlgItem(IDC_SENDAD)- GetDlgItem(IDC_PASSWORD)- GetDlgItem(IDC_SMTP)- GetDlgItem(IDC_POP)-EnableWindow(FALSE); GetDlgItem(IDC_REVAD)- GetDlgItem(IDC_SUBJECT)- GetDlgItem(IDC_BODY)- GetDlgItem(IDC_ADD)- GetDlgItem(I
7、DC_LIST)- /清空所有控件内容 m_list.DeleteAllItems();/清空附件列表 m_body=; m_name= m_password= m_pop= m_revad= m_sendad= m_smtp= m_subject= UpdateData(false); flag=true;/记录是发信状态(2)利用类向导添加“添加附件”按钮的消息映射,此段代码的作用是可以使该邮件发送其他类型的文件(图片、音乐、小视频等等)。void CTestDlg:OnAdd() / TODO: Add your control notification handler code her
8、e CFileDialog dlg(true,NULL,NULL,OFN_ALLOWMULTISELECT); if(dlg.DoModal() = IDOK) POSITION pos = dlg.GetStartPosition(); while(pos != NULL) long i=m_list.GetItemCount();m_list.InsertItem(m_list.GetItemCount()+1,dlg.GetNextPathName(pos);/AddString(dlg.GetNextPathName(pos); CString str; str=m_list.GetI
9、temText(i,0); (3)当附件添加后,有可能因为自己不喜欢而需要删除此附件,因此在用户不想要是可以双击要选中的控件来实现删除。注意此时是发送信件的状态,如果是收信状态,双击实现附件下载的功能。利用类向导添加双击列表控件项的消息映射。OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) if(flag=TRUE) if(IDOK=MessageBox(确定删除此项吗?,删除提示,MB_OKCANCEL|MB_ICONQUESTION) int nItem=m_list.GetNextItem (-1,LVNI_SELECTED); m_list.D
10、eleteItem(nItem); UpdateData(FALSE); *pResult = 0;(4)当用户单击“确定”按钮后,进行发送信件操作代码。分析:该代码是利用JMail进行邮件发送的部分。首先确定参数的合法性,当然这只能是简单的检查,所有内容必须由用户进行正确的设置。在使用JMail控件之前,可以在网上下载安装程序。安装后,把jmail.dll文件复制到当前工程目录下,并在StdAfx.h文件中加入语句#import “jmail.dll” using namespace jmail;OnOK() Add extra validation here /参数的获取与判断 Updat
11、eData(true); m_sendad.TrimRight();/去掉后面多于空格 m_password.TrimRight(); m_smtp.TrimRight(); m_revad.TrimRight(); m_subject.TrimRight(); m_body.TrimRight(); m_name.TrimRight(); /判断参数是否合法 if(m_revad.GetLength()3) AfxMessageBox(请填写正确的收件人邮箱); return; if(m_sendad.GetLength()From = (LPCTSTR)m_sendad;/ 发件人邮箱 FromName =_bstr_t(m_nam
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1