VC高级编程课程设计报告邮件客户端.docx
- 文档编号:550181
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:21
- 大小:111.74KB
VC高级编程课程设计报告邮件客户端.docx
《VC高级编程课程设计报告邮件客户端.docx》由会员分享,可在线阅读,更多相关《VC高级编程课程设计报告邮件客户端.docx(21页珍藏版)》请在冰豆网上搜索。
VC高级编程课程设计报告邮件客户端
《VisualC++高级编程》课程设计报告
目录
1.前言1
2.系统功能和使用说明1
2.1系统功能1
2.2使用说明1
3.系统设计1
3.1邮件发送模块1
3.2邮件接收模块1
4.系统实现2
4.1创建一个基于对话框的应用程序。
2
4.2发信模块设计2
4.3收信模块设计7
5.系统测试11
5.1发信测试11
5.6其他功能13
5.6.1多线程13
5.6.2动态链接库14
5.6.3注册表操作15
6.总结15
7.参考文献15
1.前言
电子邮件(简称E-mai1)又称电子信箱,它是—种用电子手段提供信息交换的通信方式。
它是全球多种网络上使用最普遍的一项服务。
这种非交互式的通信,加速了信息的交流及数据传送。
通过Internet,实现各类信号的传送、接收、存储等处理,将邮件送到世界的各个角落。
到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。
电子邮件不是一种“终端到终端”的服务,是被称为“存储转发式”服务。
这正是电子信箱系统的核心,利用存储转发可进行非实时通信,属异步通信方式。
即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。
接收者可在他认为方便的时候读取信件,不受时间和空间限制。
电子邮件的传输是通过电子邮件简单传输协议(SimpleMailTransferProtocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。
JMail组件功能强大,可以轻松的完成邮件发送,接收,加密,集群传输等工作。
本软件采用JMail组件完成大部分功能。
2.系统功能和使用说明
2.1系统功能
系统实现的主要功能:
(1)邮件的发送
(2)邮件的接收
(3)添加附件
(4)下载附件
2.2使用说明
本软件使用C++语言,MicrosoftVisualC++6.0集成开发环境,JMail组件开发。
在Windows2000及以上版本的Windows操作系统中运行。
3.系统设计
3.1邮件发送模块
用户选择发送邮件时,需要填写相关账户信息和邮件服务器(SMTP服务器)信息。
向服务器发出申请前对用户输入的数据进行简单的合法性检查。
邮件发送模块的流程图如图3.1
3.2邮件接收模块
用户选择接收邮件时,填写相关账户信息和邮件服务器信息(POP服务器)信息。
向服务器发出申请前对用户输入的数据进行简单的合法性检查。
邮件接收模块的流程图如图3.2
4.系统实现
4.1创建一个基于对话框的应用程序。
在对话资源上能添加多个控件,同时利用类向导为编辑控件及列表控件添加变量、系统控件ID、标题及对应的变量名,如表4.1。
软件主界面如图4.1。
控件ID
作用
变量类型
变量名
IDC_NAME
接受发信人的昵称
CString
m_name
IDC_SENDAD
发信人的邮箱地址
CString
m_sendad
IDC_PASSWORD
密码
CString
m_password
IDC_SMTP
SMTP服务器
CString
m_smtp
IDC_POP
POP3服务器
CString
m_pop3
IDC_REVAD
收信人地址
CString
m_revad
IDC_SUBJECT
标题
CString
m_subject
IDC_BODY
正文
CString
m_body
IDC_LIST
显示附件情况
CListCtrl
m_list
表4.1控件表
创建了上面的控件并且为控件添加变量以后,就可以进行相应的模块设计,包括收信和写信两个功能。
对于收信和写信,首先要单击“写信”按钮或者“收信”按钮,使得相应的控件可用,然后填写上相应的参数,单击“确定”按钮进行收信和发信。
4.2发信模块设计
发信模块是系统最重要的功能之一,前面已经介绍了发信的主要实现过程,利用SMTP协议进行与服务器之间的对话,从而发送整个信件。
本软件利用了JMail组件的功能来完成的。
在本模块中单击“确定”按钮,实现发送过程。
图4.1主界面
(1)在类向导生成的CTestDlg添加一个BOOL型变量flag,用来保存是发信还是收信。
利用类向导添加单击“写信”按钮的消息映射代码。
“写信”按钮的主要功能是控制各个控件的状态。
voidCEmailClientDlg:
:
OnSend()
{
GetDlgItem(IDOK)->EnableWindow(TRUE);
GetDlgItem(IDC_NAME)->EnableWindow(TRUE);
GetDlgItem(IDC_SENDAD)->EnableWindow(TRUE);
GetDlgItem(IDC_PASSWORD)->EnableWindow(TRUE);
GetDlgItem(IDC_SMTP)->EnableWindow(TRUE);
GetDlgItem(IDC_POP)->EnableWindow(FALSE);
GetDlgItem(IDC_REVAD)->EnableWindow(TRUE);
GetDlgItem(IDC_SUBJECT)->EnableWindow(TRUE);
GetDlgItem(IDC_BODY)->EnableWindow(TRUE);
GetDlgItem(IDC_ADD)->EnableWindow(TRUE);
GetDlgItem(IDC_LIST)->EnableWindow(FALSE);
//清空所有控件内容
m_list.DeleteAllItems();//清空附件列表
m_body="";
m_name="";
m_password="";
m_pop="";
m_revad="";
m_sendad="";
m_smtp="";
m_subject="";
UpdateData(false);
flag=true;//记录是发信状态
}
(2)利用类向导添加“添加附件”按钮的消息映射,此段代码的作用是可以使该邮件发送其他类型的文件(图片、音乐、小视频等等)。
voidCTestDlg:
:
OnAdd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
GetDlgItem(IDC_LIST)->EnableWindow(TRUE);
CFileDialogdlg(true,NULL,NULL,OFN_ALLOWMULTISELECT);
if(dlg.DoModal()==IDOK)
{
POSITIONpos=dlg.GetStartPosition();
while(pos!
=NULL)
{
longi=m_list.GetItemCount();
m_list.InsertItem(m_list.GetItemCount()+1,dlg.GetNextPathName(pos));
//AddString(dlg.GetNextPathName(pos));
CStringstr;
str=m_list.GetItemText(i,0);
}
}
}
(3)当附件添加后,有可能因为自己不喜欢而需要删除此附件,因此在用户不想要是可以双击要选中的控件来实现删除。
注意此时是发送信件的状态,如果是收信状态,双击实现附件下载的功能。
利用类向导添加双击列表控件项的消息映射。
voidCTestDlg:
:
OnDblclkList(NMHDR*pNMHDR,LRESULT*pResult)
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(flag==TRUE)
if(IDOK==MessageBox("确定删除此项吗?
","删除提示",
MB_OKCANCEL|MB_ICONQUESTION))
{
intnItem=m_list.GetNextItem(-1,LVNI_SELECTED);
m_list.DeleteItem(nItem);
UpdateData(FALSE);
}
*pResult=0;
}
(4)当用户单击“确定”按钮后,进行发送信件操作代码。
分析:
该代码是利用JMail进行邮件发送的部分。
首先确定参数的合法性,当然这只能是简单的检查,所有内容必须由用户进行正确的设置。
在使用JMail控件之前,可以在网上下载安装程序。
安装后,把jmail.dll文件复制到当前工程目录下,并在StdAfx.h文件中加入语句
#import“jmail.dll”
usingnamespacejmail;
voidCTestDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
if(flag==TRUE)
{
//参数的获取与判断
UpdateData(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()<3)
{
AfxMessageBox("请填写正确的发信人邮箱");
return;
}
if(m_body=="")
{
AfxMessageBox("请填写正文");
return;
}
if(m_subject=="")
{
if(IDCANCEL==MessageBox("确定不填写标题吗?
","提示",MB_OKCANCEL|MB_ICONQUESTION))
return;
}
if(m_name=="")
{
if(IDCANCEL==MessageBox("确定不填写昵称吗?
","提示",MB_OKCANCEL|MB_ICONQUESTION))
return;
}
//进行发信
try
{
CoInitialize(NULL);//COM的初始化
jmail:
:
IMessagePtrpMessage("JMail.Message");
pMessage->From=(LPCTSTR)m_sendad;//发件人邮箱
pMessage->FromName=_bstr_t(m_nam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 高级编程课程设计报告邮件客户端 高级 编程 课程设计 报告 邮件 客户端