VC高级编程课程设计报告邮件客户端Word下载.docx

上传人:b****2 文档编号:13477258 上传时间:2022-10-11 格式:DOCX 页数:21 大小:111.74KB
下载 相关 举报
VC高级编程课程设计报告邮件客户端Word下载.docx_第1页
第1页 / 共21页
VC高级编程课程设计报告邮件客户端Word下载.docx_第2页
第2页 / 共21页
VC高级编程课程设计报告邮件客户端Word下载.docx_第3页
第3页 / 共21页
VC高级编程课程设计报告邮件客户端Word下载.docx_第4页
第4页 / 共21页
VC高级编程课程设计报告邮件客户端Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

VC高级编程课程设计报告邮件客户端Word下载.docx

《VC高级编程课程设计报告邮件客户端Word下载.docx》由会员分享,可在线阅读,更多相关《VC高级编程课程设计报告邮件客户端Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

VC高级编程课程设计报告邮件客户端Word下载.docx

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.系统实现

在对话资源上能添加多个控件,同时利用类向导为编辑控件及列表控件添加变量、系统控件ID、标题及对应的变量名,如表4.1。

软件主界面如图4.1。

控件ID

作用

变量类型

变量名

IDC_NAME

接受发信人的昵称

CString

m_name

IDC_SENDAD

发信人的邮箱地址

m_sendad

IDC_PASSWORD

密码

m_password

IDC_SMTP

SMTP服务器

m_smtp

IDC_POP

POP3服务器

m_pop3

IDC_REVAD

收信人地址

m_revad

IDC_SUBJECT

标题

m_subject

IDC_BODY

正文

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)->

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(IDC_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)利用类向导添加“添加附件”按钮的消息映射,此段代码的作用是可以使该邮件发送其他类型的文件(图片、音乐、小视频等等)。

voidCTestDlg:

OnAdd()

//TODO:

Addyourcontrolnotificationhandlercodehere

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)当附件添加后,有可能因为自己不喜欢而需要删除此附件,因此在用户不想要是可以双击要选中的控件来实现删除。

注意此时是发送信件的状态,如果是收信状态,双击实现附件下载的功能。

利用类向导添加双击列表控件项的消息映射。

OnDblclkList(NMHDR*pNMHDR,LRESULT*pResult)

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;

OnOK()

Addextravalidationhere

//参数的获取与判断

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()<

请填写正确的发信人邮箱"

if(m_body=="

请填写正文"

if(m_subject=="

if(IDCANCEL==MessageBox("

确定不填写标题吗?

提示"

MB_OKCANCEL|MB_ICONQUESTION))

return;

if(m_name=="

确定不填写昵称吗?

//进行发信

try

CoInitialize(NULL);

//COM的初始化

jmail:

IMessagePtrpMessage("

JMail.Message"

pMessage->

From=(LPCTSTR)m_sendad;

//发件人邮箱

FromName=_bstr_t(m_nam

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1