本科毕业设计论文pop3邮件客户端课程设计Word格式.docx

上传人:b****5 文档编号:8444797 上传时间:2023-05-11 格式:DOCX 页数:28 大小:564.62KB
下载 相关 举报
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第1页
第1页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第2页
第2页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第3页
第3页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第4页
第4页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第5页
第5页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第6页
第6页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第7页
第7页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第8页
第8页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第9页
第9页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第10页
第10页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第11页
第11页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第12页
第12页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第13页
第13页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第14页
第14页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第15页
第15页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第16页
第16页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第17页
第17页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第18页
第18页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第19页
第19页 / 共28页
本科毕业设计论文pop3邮件客户端课程设计Word格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

本科毕业设计论文pop3邮件客户端课程设计Word格式.docx

《本科毕业设计论文pop3邮件客户端课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文pop3邮件客户端课程设计Word格式.docx(28页珍藏版)》请在冰点文库上搜索。

本科毕业设计论文pop3邮件客户端课程设计Word格式.docx

(1)功能模块1要求实现的程序为图形化界面,可以输入POP服务的相关信息(包括POP服务器名、用户和密码),输出交互过程中的POP命令与响应信息,以及从POP服务器的制定邮箱中获得的邮件信息。

(2)功能模块2要求遵循RFC1939的相关POP3协议规定可以登录到任意一个标准的POP3服务器。

只要求实现USER、PASS、STAT、RETR、DELE和QUIT命令。

点击链接按钮,实现USER与PASS命令;

单机删除按钮,实现DELE命令;

单击退出按钮,实现QUIT命令。

2课程设计要求

2.1设计要求

(1)要求有良好的编程规范与详细的注释信息。

(2)要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。

(3)要求在Windows操作系统环境中,建议使用VisualC++编程工具实现。

2.2功能要求

所设计的的程序经调试后能与现有的邮件服务器系统(如:

163、126、sina、sohu、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。

2.3设计平台介绍

VC++是微软公司开发的一个IDE(集成开发环境),换句话说就是使用C++的一个开发平台。

VC++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大,Windows下编程需要了解其消息机制以及回调(callback)函数的原理,MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等。

MFC是VisualC++进行开发的一种主要模式。

2.4POP3协议

POP邮局协议负责从邮件服务器中检索电子邮件。

它要求邮件服务器完成下面几种任务:

从邮件服务器中检索邮件并从服务器中删除这个邮件;

从邮件服务器中检索邮件但不删除它;

不检索邮件,只是询问是否有新邮件到达。

Pop协议支持多用户互联网邮件扩展,实际上这样就可以传输任何格式的文件。

Pop3协议即邮局协议的第三个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。

它是Internet电子邮件的第一个离线协议标准,pop3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而pop3服务器则是遵循pop3协议的接收邮件服务器,用来接收电子邮件。

2.5实验步骤

1、新建MFC程序,选择合适的位置保存工程项目;

2、绘制MFC程序界面,熟悉所使用的控件。

3、定义控件所对应的变量。

4、编写程序的功能实现部分代码,并调试运行。

5、分析实验结果,编写课程设计文档。

3概要设计

3.1功能模块图

3.2功能模块描述

1)与现有服务器的连接

2)用户从邮件服务器上下载邮件到本地主机上

4详细设计

4.1功能流程图

 

4.2重点设计

实现步骤

1.在visual中创建一个工程

2.设计基于对话框的图形界面,添加组件和按钮

步骤3

先在MailClientDlg.h中添加如下全局变量:

#defineMAX_SIZE65535

再在MailClientDlg类中添加如下私有成员:

boolRecvRespond();

boolSendCommanf();

charCommand[MAX_SIZE];

charRespond[MAX_SIZE];

boolRespondStatue;

SOCKETSocket;

再按Ctrl+W进入MFCClassWizard,选择MemberVariable,为控件添加成员变量,如图所示

步骤4:

在资源视图中选择对话框,双击“链接”按钮,为之创建响应函数OnConnect(),双击“接收”按钮,为之创建响应函数OnReceive(),双击“删除”按钮,为之创建响应函数OnDelete()。

双击“退出”按钮,为之创建响应函数OnQuit().

步骤5:

添加相关代码。

5测试与调试

5.1测试目的

检查POP3邮件客户端程序是否能够与现有的邮件服务器如:

163、QQ进行通信,是否从邮件服务器上下载邮件到本地主机上。

5.2测试环境

WinXP系统visualC++6.0

5.3测试结果

客户端建立之后,连接国内现有的服务器系统,证明能够与主流服务器系统进行通信,具体的通信界面如下图所示

与服务器取得联系之后,对目标邮件进行下载接收,证明邮件可以正常下载到本地主机,具体的接收界面如下图所示。

5.4结果分析

经过测试,该邮件客户端各个功能均能实现,POP3端口能与国内现有的主流服务器系统(如:

此次邮件客户端设计成功。

6出现的问题及解决方法

6.1设计中出现的问题

1)设计初没有接触尝试过相似系统的设计;

2)设计时编写程序不是很顺利;

3)调试程序时出现很多错误;

4)软件界面过于简洁。

6.2解决方法

1)找来相关资料,经过本小组的一番讨论研究,对该邮件客户端有了较清晰的认识,才开始着手于正式设计。

2)经过一段时间的研究,找到了可行的函数模式。

3)不断地耐心调试,直至出现满意的结果。

4)经过相应的修改,终于达到了较好的效果。

7心得体会

7.1总结

通过此次课程设计对现今流行的邮件系统现状有了一定的了解,针对基本的邮件服务器设计进行了分析,选择了相应的编程语言及相关的协议及技术,通过编程实现简单的邮件的收发,主要完成了以下工作:

(1)在明确邮件收发系统的概念及原理的基础上对邮件服务器模块进行整体分析,确定编程思路及大体框架;

(2)理解并应用Socket接口及网络编程技术,分析协议通信的整个过程,学会用编程语言实现其功能;

(3)对代码中存在的bug进行调试及分析,深入理解服务器与客户端之间的通信过程,及怎样利用协议来实现对话;

(4)由于所编写的邮件系统不仅只是给予发送简单的文本信息而已,而且还能够发送添加附件的邮件,所以他有很大的实用性。

(5)当然,随着网络技术的飞速发展,邮件服务器系统已经产生了很多功能非常完善的邮件客户端,本客户端只实现了一些基本功能,有些功能需要进一步完善和改进。

7.2发展需求

在邮件收发系统能给我们带来很多方便的同时,用户对它的功能需求也在不断的提高,现在通过电子油件传播的病毒很多(大多通过附件传播)。

系统该应加入对附件的安全性检查功能,对SMTP,POP,IMTP,LDAP,HTTP可以支持SSL/TLS加密传输,防止网络侦听,通信更安全。

为了给生活带来更多的方便,邮箱应该可以和手机绑定,支持短信提醒,有新邮件到达时,可以在手机上获得通知。

提供快速设置向导,只需输入几个简单参数,让您一分钟内设置好邮件系统。

可以同时发送多个附件,超大附件,提供网络磁盘功能,并且可以设置共享。

提供网络记事本服务。

8程序清单

源代码:

//MailClientDlg.cpp:

implementationfile

//

#defineMAX_SIZE4096

#include"

stdafx.h"

MailClient.h"

MailClientDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCMailClientlg:

publicCDialog

{

public:

//{{AFX_DATA(CMailClientlg)

enum{IDD=IDD_ABOUTBOX};

enmu{IDD=IDD_MAILCLIENT_DIALOG};

CStringm_Address;

CStringm_Login;

CStringm_Mail;

CStringm_Password;

CStringm_Account;

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//}}AFX_VIRT

protected:

//{{AFX_MSG(CAboutDlg)

afx_msgvoidOnConnect();

afx_msgvoidOnQuit();

afx_msgvoidOnRecevice();

adx_magvoidOndelete();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

private:

boolRecvRespond();

boolSendCommand();

charCommand[MAX_SIZE];

charRespond[MAX_SIZE];

boolRespondStatue;

SOCKETSocket;

};

//MailClientDlg.cpp:

imlementationfile

MailnClient.h"

MailnClientlg.h"

winsock.h"

voidCMailClientDlg:

:

OnConnect()

UpdataData(true);

WSADATAWSAData;

if(WSAStartup(MAKEWORD(2,2),&

WSAData)!

=0)

{

MessageBox("

初始化Winsock失败!

"

);

return;

}

Socket=socket(AF_INET,SOCK_STREAM,0);

if(Socket==INVAID_SOCKET)

MessageBox("

创建Socket失败!

);

WSACleanup();

return;

}

intIpAddress;

IpAddress=inet_addr(m_Address);

if(IpAddress==INADDR_NONE)

hostent*pHostent=gethostbyname(m_Address);

if(pHostent)

IpAddress(*(in_addr*)pHostent->

h_addr).s_addr;

sockaddr_inserveraddr;

memset(&

severaddr,0,sizeof(severaddr));

severaddr.sin_family=AF_INET;

severaddr.sin_port=htons(110);

severaddr.sin_addr.s_addr=IpAddress;

intnConnect;

nConnect=connect(Socket,(sockaddr*)&

severaddr,sizeof(severaddr));

if(nConnect==SOCKET_ERROR)

链接建立失败!

closesocket(socket);

m_Login+=Client:

"

Connectto"

;

m_Login+=m_Address;

m_Login+="

...\r\n"

if(!

RecvRespond())

else

if(!

m_Login+="

Sever:

m_Login+=Respond;

else

链接响应错误!

closesocket(Socket);

WSACleanup();

memset(Command,0,MAX_SIZE);

memcpy(Command,"

USER"

strlen("

USER"

));

memcpy(Command+strlen("

),m_Account,strlen(m_Account));

)+strlen(m_Account),"

\r\n"

2);

SendCommand())

Client:

m_Login+=Command;

if(RespondStatue==true)

m_Login+="

Servere:

m_Login+=Respond;

MesssageBox("

USER响应错误!

memset(Command,0MAX_SIZE);

PASS"

),m_Password,strlen(m_Password));

)+strlen(m_Password),"

SendCommand());

PASS******\r\n"

if(RecvRespond())

if(RespondStatue==true)

Server"

PASS响应错误!

closesocket(Socket);

UpdateData(false);

voidCAboutDlg:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

//CMailClientDlgdialog

CMailClientDlg:

CMailClientDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CMailClientDlg:

IDD,pParent)

//{{AFX_DATA_INIT(CMailClientDlg)

m_Mail=_T("

m_address=_T("

m_Login=_T("

m_password=_T("

m_Account=_T("

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->

LoadIcon(IDR_MAINFRAME);

//{{AFX_DATA_MAP(CMailClientDlg)

DDX_Text(pDX,IDC_EDIT3,m_Mail);

DDX_Text(pDX,IDC_EDIT1,m_address);

DDX_Text(pDX,IDC_EDIT10,m_Login);

DDX_Text(pDX,IDC_EDIT4,m_password);

DDX_Text(pDX,IDC_EDIT9,m_Account);

BEGIN_MESSAGE_MAP(CMailClientDlg,CDialog)

//{{AFX_MSG_MAP(CMailClientDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_LBN_SELCHANGE(IDC_LIST4,On)

ON_BN_CLICKED(IDC_BUTTON2,OnConnect)

ON_BN_CLICKED(IDC_BUTTON5,OnQuit)

ON_BN_CLICKED(IDC_BUTTON3,OnReceive)

ON_BN_CLICKED(IDC_BUTTON4,Ondelete)

//CMailClientDlgmessagehandlers

BOOLCMailClientDlg:

OnInitDialog()

OnInitDialog();

//Add"

About..."

menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&

0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<

0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->

AppendMenu(MF_SEPARATOR);

AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'

smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);

//Setbigicon

SetIcon(m_hIcon,FALSE);

//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

OnSysCommand(UINTnID,LPARAMlParam)

if((nID&

0xFFF0)==IDM_ABOUTBOX)

CAboutDlgdlgAbout;

dlgAbout.DoModal();

CDialog:

OnSysCommand(nID,lParam);

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

OnPaint()

if(IsIconic())

CPaintDCdc(this);

//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2