pop3邮件客户端课程设计文档

合集下载

mail服务器课程设计

mail服务器课程设计

mail服务器课程设计一、课程目标知识目标:1. 让学生理解邮件服务器的基本概念,掌握邮件服务的工作原理;2. 学会配置与管理邮件服务器,了解邮件服务器相关的网络协议;3. 掌握邮件客户端的设置与使用,了解电子邮件的安全性问题。

技能目标:1. 培养学生独立搭建邮件服务器的能力,提高实际操作技能;2. 培养学生解决邮件通信过程中常见问题的能力;3. 培养学生利用电子邮件进行有效沟通的技巧。

情感态度价值观目标:1. 培养学生对计算机网络通信技术的兴趣,激发学习积极性;2. 增强学生的网络安全意识,培养良好的网络道德观念;3. 提高学生的团队协作能力,培养沟通、交流、分享的良好习惯。

课程性质:本课程为计算机网络技术与应用的实践课程,旨在让学生掌握邮件服务器的搭建与使用,提高实际操作能力。

学生特点:学生具备一定的计算机网络基础知识,对邮件服务器有一定了解,但实际操作能力较弱。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力。

通过课程学习,使学生能够独立完成邮件服务器的搭建与配置,解决实际问题。

同时,注重培养学生的网络安全意识和团队协作能力。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. 邮件服务器概述- 电子邮件系统基本原理- 邮件服务器的作用与分类2. 邮件服务器搭建与配置- 常用邮件服务器软件介绍- 邮件服务器搭建步骤与操作方法- 邮件服务器配置参数讲解3. 邮件服务器相关网络协议- SMTP、POP3、IMAP协议的作用与工作原理- 邮件传输过程中的加密与安全认证4. 邮件客户端设置与使用- 常见邮件客户端介绍- 邮件客户端的配置方法- 邮件客户端的使用技巧5. 邮件服务器安全与维护- 邮件服务器安全策略- 常见邮件服务器攻击手段与防范措施- 邮件服务器日常维护方法6. 电子邮件应用案例- 企业邮件系统搭建与使用- 教育机构邮件系统应用- 邮件营销与网络安全案例分析教学内容安排与进度:第一课时:邮件服务器概述第二课时:邮件服务器搭建与配置第三课时:邮件服务器相关网络协议第四课时:邮件客户端设置与使用第五课时:邮件服务器安全与维护第六课时:电子邮件应用案例教学内容与教材关联性:本教学内容紧密围绕教材中邮件服务器相关章节,结合课程目标,科学系统地组织教学,确保学生掌握邮件服务器的基本知识与实际操作技能。

基于POP3协议的电子邮件接收程序的设计论文

基于POP3协议的电子邮件接收程序的设计论文

南阳理工学院毕业设计论文题目基于POP3协议的电子邮件接收程序的设计学院软件学院专业软件工程班级08级软件工程7班姓名王志杰指导教师刘凯2012 年 3 月26 日目录摘要 (2)1、引言 (3)1.1 课程设计的内容 (3)1.2 课程设计的要求 (3)2、设计平台简介 (3)2.1 VC++ (3)3、邮件接收协议 (5)3.1 POP3简介 (5)4、设计原理 (8)4.1 POP3交互模型 (8)5、课程设计步骤 (9)5.1 函数构造 (9)5.2 接收邮件的步骤 (15)6、测试 (19)6.1 测试目的 (19)6.2 测试环境 (19)6.3 测试结果 (19)6.4 结果分析 (20)7、出现的问题及解决方法 (20)7.1设计中出现的问题 (20)7.2解决方法 (20)参考文献 (21)摘要电子邮件可以使人们有效地进行电子化的数据异地交换。

Internet以电子邮件服务推动着人类的通信行为不断发展,邮件的接收系统。

本论文以Visual C#为开发平台,利用Socket 套接字编程,实现了基于POP3协议的邮件接收程序,介绍了POP3协议的原理及电子邮件接收程序的设计与实现方法。

随着Internet/Intranet的迅猛发展,电子邮件(E-Mail)已成为因特网上非常流行、非常方便的通信方式。

电子邮件技术不断进步,邮件协议也不断发展。

目前应用最广泛的电子邮件收件协议是POP3。

本文采用微软最新的.NET技术,以Visual C#为开发平台,利用Socket套接字编程开发了基于POP3协议的邮件接收程序,现对相关原理及具体设计进行讨论。

关键词课程设计;电子邮件;接收程序;POP3;Socket;Visual C#1、引言随着Internet/Intranet的迅猛发展,电子邮件(E-Mail)已成为因特网上非常流行、非常方便的通信方式。

电子邮件技术不断进步,邮件协议也不断发展。

北京理工大学-计算机网络实践-实验 4 POP3 邮件客户程序

北京理工大学-计算机网络实践-实验 4 POP3 邮件客户程序

实验四POP3 邮件客户程序一. 实验目的电子邮件 E-Mail 是Internet 中广泛使用的服务之一,在Internet 电子邮件系统中,邮件客户接收邮箱内容的协议是POP3 协议。

1.理解 POP3 协议的工作原理2.掌握 POP3 邮件客户程序的编程方法3.掌握邮件消息的格式二. 实验内容利用 WinSock 编程接口编写POP3 邮件客户程序,在用户界面中给出必要的邮件接收信息:接收邮件服务器的IP 地址、用户名、口令等,通过POP3 协议将邮箱内容传递到POP3 邮件客户并可以显示文本邮件内容。

三. 实验环境程序运行环境为以太网,采用 TCP/IP 协议栈,网络操作系统为Windows,具有Internet 连接能力。

程序开发环境为VS2012。

四. 实验步骤1.POP3邮件客户端程序功能(1) POP3 邮件客户首先显示用户界面,可以指定接收邮件服务器的地址、用户名和口令等信息(2)通过POP3 协议接收邮箱中邮件列表,并显示邮件列表(3)接收指定邮件(文本邮件)的详细信息并显示,包括:发件人、发送日期、邮件标题和内容等(4)可以打开邮件,查看邮件内容,也可删除邮件2.POP3邮件客户端程序开发(1)程序流程图:(2)本程序采用模块化方法,将节目逻辑和后台处理逻辑分开。

界面逻辑主要为POP3Dlg 类,包含各种界面控件,以及控件处理方法。

后台处理逻辑主要为POP_SOCKET类,包含网络socket的各种处理方法,并将其组织成POP协议的命令,例如list,dele,login,retr等,完成其相应功能。

在程序运行过程中,界面逻辑根据不同控件处理方法,组合使用后台处理类POP_SOCKET 的各种方法完成网络通信,POP_SOCKET类将接收到的数据存放在一个全局变量的buffer中,以供POP3Dlg类使用。

(3)类图:3.编译和执行程序将 POP3 邮件客户程序编译、连接成执行程序,运行POP3 邮件客户程序。

#基于POP3协议的电子邮件接收程序的设计论文

#基于POP3协议的电子邮件接收程序的设计论文

学 号: 068108210南阳理工学院 毕业设计论文 目 录 摘 要 .........................................1、引 言 ...........................................1.1 课程设计的内容 (2)1.2 课程设计的要求 ............................................................................................................... 2 2、设计平台简介 . (2)2.1 VC++ (2)3、邮件接收协议 (4)3.1 POP3简介 (4)4、设计原理 (7)4.1 POP3交互模型 (7)5、课程设计步骤 (8)5.1 函数构造 (8)5.2 接收邮件的步骤 (14)6、测试 (18)6.1 测试目的 (18)题 目基于POP3协议的电子邮件接收程序的设计 学 院软件学院 专 业软件工程 班 级08级软件工程7班 姓 名王志杰 指导教师 刘凯 2012 年 3 月 26 日6.2 测试环境 (18)6.3 测试结果 (18)6.4 结果分析 (19)7、出现的问题及解决方法 (19)7.1设计中出现的问题 (19)7.2解决方法 (19)参考文献 (19)摘要电子邮件可以使人们有效地进行电子化的数据异地交换。

Internet以电子邮件服务推动着人类的通信行为不断发展,邮件的接收系统。

本论文以Visual C#为开发平台,利用Socket 套接字编程,实现了基于POP3协议的邮件接收程序,介绍了POP3协议的原理及电子邮件接收程序的设计和实现方法。

随着Internet/Intranet的迅猛发展,电子邮件(E-Mail)已成为因特网上非常流行、非常方便的通信方式。

电子邮件技术不断进步,邮件协议也不断发展。

基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文

基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文

目录第一章引言 (1)1.1 设计的目的和意义 (1)1.2 电子邮件收发的原理和过程 (1)1.2.1 电子邮件的定义 (1)1.2.2 电子邮件的工作过程 (1)1.2.3 三种常见邮件协议 (2)1.3 开发环境简介 (2)第二章SMTP和POP3协议及工作原理 (3)2.1 SMTP协议 (3)2.2 POP3协议 (3)2.3 BASE64编码与解码 (4)2.3.1 BASE64编解码原理 (4)2.3.2 BASE64函数 (5)第三章系统设计 (6)3.1 系统功能分析 (6)3.2 系统模块设计 (6)3.3 数据流程设计 (7)3.4 数据库逻辑结构设计 (7)第四章系统开发过程 (8)4.1建立数据表 (8)4.2 创建系统主窗体 (8)4.3 通过程序发送邮件 (9)4.4 通过程序接收邮件 (10)第五章系统测试 (12)5.1 系统主界面 (12)5.2 用户注册界面 (12)5.3 修改密码界面 (13)5.4 邮件发送界面 (14)5.5 邮件接收界面 (14)5.6 邮件查询界面 (15)5.7 编辑用户界面 (16)总结 (17)致谢 (18)参考文献: (19)基于SMTP与POP3的邮件收发系统的设计与实现摘要:电子邮件是目前Internet上应用最多和最广泛的服务项目之一,SMTP(Simple Mail Transport Protocol)和POP3(Post Office Protocol 3)是在电子邮件服务中分别负责发信和收信的两种协议。

本文介绍了电子邮件系统的工作原理及相关协议,并基于这些协议设计和开发了一个实用的邮件收发系统。

用户运行软件后可以进行基本操作(用户注册、修改密码、安全退出),邮件管理(邮件发送和邮件接收),用户管理(查询邮件和修改、查询、删除用户),并对数据库进行配置。

若为新用户则需先注册,用户可以发送或接收一个或多个带有附件的邮件,也可以使用不同的SMTP或POP3服务器。

邮件监控SMTP POP3系统设计与实现(含源文件)

邮件监控SMTP POP3系统设计与实现(含源文件)

摘要本论文主要研究了使用LIBNIDS网络安全开发包对邮件客户端收发的邮件的还原。

邮件客户端收发邮件时涉及到的协议是SMTP协议和POP3协议。

利用LIBNIDS网络安全开发包对邮件的数据包进行捕获,实现了邮件发件人、收件人、抄送人、收发日期、邮件主题、邮件内容和邮件的附件名称信息的提取。

在对邮件的各字段进行还原的过程中,对SMTP和POP3进行协议分析,使用捕获到的SMTP协议和POP3协议邮件的数据包中的内容,分析了邮件的发送和接收时各字段所在的位置和对应的格式。

对于含有汉字的字段,如发件人、收件人、抄送人、主题、内容和附件名的还原,也利用分析出的邮件各字段数据格式,设计出汉字还原的方法。

在此基础上,实现了邮件监视端软件的编写,利用互联网信息服务(IIS)浏览被监视计算机中的邮件日志文件,实现了邮件监控子系统中监视邮件收发情况的功能。

关键词网络监控;邮件监控;邮件还原;SMTP;POP3- I -AbstractThis thesis mainly focused on the restoration for the e-mail client to send or receive e-mails using the development package of network security LIBNIDS. E-mail client to send and received e-mails related to SMTP and POP3 protocol. Making use of LIBNIDS to capture the packets of e-mails, it’s achieved the restoration of main information in e-mails, including the sender, recipient, carbon copy (cc), date, subject, content and attachment name.In the process of restoring e-mails, it carried out on the SMTP and POP3 protocol analysis. With the content of e-mails captured based on SMTP and POP3 protocol, we have analyzed the format for corresponding field in e-mail. While the field contains characters, such as sender, recipient, cc, subject, content and attachment name we also analyzed the format for corresponding field and designed the means to restore Chinese characters.Using of the Internet Information Services (IIS) on this basis, it’s achieved the function of monitoring the situation to send and receive e-mails in the subsystem of e-mail monitoring.Key words network monitoring e-mail monitoring e-mail restoration SMTP POP3- II -目录摘要 ..................................................................................................................... I Abstract .................................................................................................................. II第1章绪论 (1)1.1 课题背景 (1)1.2 课题来源、目的和意义 (1)1.2.1 国外研究现状 (1)1.2.2 国内研究现状 (2)1.3 主要研究内容 (2)1.3.1 邮件监控 (2)1.3.2 监控端软件 (3)1.4 本文结构 (3)第2章理论基础 (4)2.1 引言 (4)2.2 SMTP协议和POP3协议 (4)2.2.1 SMTP协议简介 (4)2.2.2 POP3协议简介 (6)2.3 LIBNIDS开发包 (7)2.3.1 LIBNIDS简介 (7)2.3.2 LIBNIDS数据结构 (9)2.3.3 LIBNIDS基本函数 (11)2.3.4 LIBNIDS的使用 (12)2.4 BASE64简介 (13)2.5 本章小结 (13)第3章邮件监控子系统构成和框架 (15)3.1 引言 (15)3.2 模块组成 (15)3.3 运行框架 (18)3.4 本章小结 (19)第4章基于SMTP和POP3协议的邮件还原 (20)- III -4.1 引言 (20)4.2 总流程 (20)4.3 具体实现 (23)4.3.1 提取发件人 (23)4.3.2 提取收件人 (24)4.3.3 提取抄送人 (26)4.3.4 提取主题 (28)4.3.5 提取日期 (30)4.3.6 提取内容 (31)4.3.7 提取附件名 (33)4.4 邮件还原中的问题及解决办法 (36)4.5 本章小结 (37)第5章监视端的实现 (38)5.1 引言 (38)5.2 监视端框架 (38)5.3 具体实现 (39)5.3.1 数据库 (39)5.3.2 IIS设置 (40)5.3.3 日志浏览、刷新和保存 (40)5.3.4 添加和删除监视计算机 (42)5.4 软件编写中的问题及解决办法 (43)5.5 本章小结 (43)第6章综合测试 (44)6.1 引言 (44)6.2 准备工作 (44)6.3 测试 (45)6.3.1 收件人、抄送人、主题、内容是英文情况 (45)6.3.2 收件人、抄送人、主题、内容是汉字情况 (46)6.3.3 多收件人或抄送人情况 (46)6.3.4 含有多附件情况 (47)6.3.5 邮件内容超量情况 (47)6.3.6 被监视计算机未启动情况 (49)6.4 本章小结 (49)- IV -结论 (50)致谢 (51)参考文献 (52)- V -第1章绪论1.1课题背景随着企业内部局域网络和办公自动化的普及,企业的办公及业务环境得到很大的改善,同时,网络的安全问题也越来越受到关注。

中职教育三年级上学期电子与信息《邮件客户端的使用》教学设计

中职教育三年级上学期电子与信息《邮件客户端的使用》教学设计
(2)密送。如果将某个收件人的名称添加到邮件的密件抄送箱,那么邮件的副本就会发送给此收件人,邮件的其他收件人看不到此收件人的名称。如果创建新邮件时“密件抄送”框不可见,则可以添加在发送邮件时,单击“抄送”按钮可以在弹出的对话框中添加抄送人的地址。在“密件抄送”位置添加联系人地址即可以实现密送
课堂练习
创建邮件客户端账号
知识小结
邮件客户端的使用过程
2.使用邮件客户端的注意事项
课后练习
1.在邮件服务器上安装________后,用户可以使用支持__________协议的电子邮件客Байду номын сангаас端连接到邮件服务器,并将电子邮件检索到本地计算机。
本书以Outlook Express 2010为例说明邮件客户端的基本使用方法。
1自动添加邮件签名
当发送一封邮件给对方时,有时需要带上我们的个人信息,如电话号码、通信地址等,以便对方能在有急事时可以及时联系到我们。设置outlook邮件签名的方法如下
(1)打开outlook,单击“选项”按钮,在“选项”页面中单击“签名”按钮
(2)在弹出的“账户设置”对话框中选中需要更改文件位置的账户,单击“更改文件夹”按钮
(3)在弹出的“新建电子邮件送达位置”对话框中设置文件夹及路径
3 Outlook中的抄送和密送
在发送邮件时,有时需要将邮件抄送或密送给某人,两者之间的区别是什么呢?
(1) 抄送。如果将某个收件人的名称添加到邮件的抄送箱,那么邮件的副本就会发送给此收件人邮件的其他收件人能看到此收件人的名称
教学重点
掌握邮件客户端的使用方法
教学难点
熟练使用邮件客户端收发邮件
新课导入
邮件客户端的概述:邮件客户端通常指使用IMAP/APOP/POP3/SMTP/ESMTP/协议收发电子邮件的软件

POP3邮件客户端(.NET2.0)

POP3邮件客户端(.NET2.0)

POP3邮件客户端(.NET2.0)<转>虽然.NET fram ework 2.0已经通过改良SMTP类完善了对发邮件的支持,但是收邮件仍然是个缺陷。

CodeProject里有各种各样的关于支持POP3的文章,但是都有缺陷:∙一些代码很难维护∙没有用.NET代码,用的是DLL。

∙太有限的功能并且报错。

∙没有说明服务器命令和服务器响应。

∙没有对SSL的支持。

∙没有XML文件等等。

这个工程建立于早期的工程,但是用纯粹的C#2.0写的。

文章首先着眼于从POP3服务器(RFC1939)下载邮件。

有连接到POP3服务器的方法,获取邮件列表的方法,请求某些邮件的方法,删除邮件并断开的方法。

详细的错误报备和跟踪适用于调式和专业的应用。

以后的文章将把收到的邮件分解为(邮件)体,alternative views和附件在MIME规范之后。

我用Gmail 作为测试,因为他被大家广泛的使用(推荐)。

代码基于一下工作:∙Bill Dean写的《POP3 Client as a C# Class》∙Agus Kurniawan写的《Retrieve Mail From a POP3 Server Using C#》背景:与POP3服务器相结合从POP3服务器下载一封邮件相当直接。

用命令和POP3服务器通信相当简单并且易读。

一旦一个连接,有可能用了SSL被确认,客户端需要调用一个在Pop3MailClient被叫做“connected”的事务,用于提供一个有用户1名和密码。

1在连接的状态下,客户端可以执行一下命令:∙STAT:GetMailboxStats()收件箱的大小和邮件数目。

∙LIST:GetEmailIdList(),所有邮件列表。

∙LIST [m sg]:GetEmailSize(),某个邮件的大小。

∙UIDL:GetUniqueEmailIdList(),得到唯一的邮件ID∙NOOP:NOOP(),仅仅判断服务器是否活动∙。

(完整版)pop3邮件客户端课程设计文档

(完整版)pop3邮件客户端课程设计文档

青海民族大学课程设计报告课程类别:本科课程名称:TCP/IP协议原理课程设计课程代号:XXXXXX指导教师:昝风彪POP3邮件客户端姓名:卢国祥学号:1410030010院系:计算机学院专业:网络工程班级:14网本课程设计报告提交时间:2016 年12月日目录1课程设计内容 (1)2课程设计要求 (1)2.1功能要求 (1)3概要设计 (3)3.1功能模块图 (3)3.2功能模块描述 (4)4详细设计 (5)4.1功能流程图 (5)4.2重点设计 (7)5测试与调试 (11)6心得体会 (13)参考文献 (28)POP3邮件客户端1课程设计内容设计并实现POP3邮件客户端系统,要求能够向POP服务器发送命令,并接受POP服务器返回的响应和数据,程序设计具备以下功能模块:(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操作系统环境中,建议使用Visual C++编程工具实现。

2.2 功能要求所设计的的程序经调试后能与现有的邮件服务器系统(如:163、126、sina、sohu、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。

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

POP3协议文档(总15页)

POP3协议文档(总15页)

POP3 邮局协议-版本3 简介对于在网络上的比较小的结点,支持消息传输系统( ❆)是不实际的。

例如,一台工作站可能不具有充足的资源允许 ❆服务器和相当的本地邮件传送系统保持序驻留,并持续运行。

同样的,将一台个人计算机长时间连接在✋类型网络上的费用也是可观的(结点缺少的资源被称为❽联络性❾)。

虽然如此,在这样的小结点上允许管理邮件是十分有用的,并且这些结点经常支持一个用户代理来管理邮件。

为解决这一问题,能够支持 ❆的结点就为这些不能支持的结点提供了邮件存储功能。

邮局协议 版本 就是使这样的工作站可以用一种比较实用的方法来访问存储于服务器上的储存邮件。

通常,这意味着工作站可以从服务器上取得邮件,而服务器为它暂时保存邮件。

在下文中,客户主机指的是利用 服务的主机,而服务器主机指的是提供 服务的主机。

 简单说明在此文档中不指明客户主机如何将邮件送入到传送系统中去。

但这里有一个说明:当用户代理需要将信息送到传送系统时,它在接力主机上建立 ❆连接(这些接力主机可以是 主机,也可以不是)。

 基本操作初始时,服务器通过侦听❆端口 开始 服务。

当客户主机需要使用服务时,它将与服务器主机建立❆连接。

当连接建立后, 发送确认消息。

客户和 服务器相互(分别)交换命令和响应,这一过程一直要持续到连接终止。

命令由一个命令和一些参数组成。

所有命令以一个 ☹☞对结束。

命令和参数由可打印的✌✋✋字符组成,它们之间由空格间隔。

命令一般是三到四个字母,每个参数却可达 个字符长。

响应由一个状态码和一个可能跟有附加信息的命令组成。

所有响应也是由 ☹☞对结束。

现在有两种状态码,❽确定❾ ☎✂✂✆和❽失败❾ ☎✂☜✂✆。

对于特定命令的响应是由许多字符组成的。

在这些情况中,下面一一表述:在发送第一行响应和一个 ☹☞之后,任何的附加信息行发送,他们也由 ☹☞对结束。

POP3客户端

POP3客户端

一.实验目的1.操作系统,windows xp home edition版本2.Vc++ 6.0编译器3.接入互联网二.实验目的理解POP3协议原理,对邮件接收信息内容进行分析,熟悉SOCKET编程,来实现POP3客户端。

三.实验内容实现一个简单的POP3客户端。

1.连接POP3服务器.2.实现命令:USER,PASS,STAT,LIST,RETR,DELE,QUIT。

3.接收邮箱所有邮件4.邮件进行分析,解析出:主题,发件人,发件时间,发件内容。

5.对个部分内容进行传输编码的解码,根据传输编码,进行base64解码或Quoted-Printable的解码6.进行编码转换,将邮件原编码UTF8,GBK或7bit等转换为GBK,可以正确在本机上显示四.程序运行在实验的时候,对和进行了测试,以下是对 服务器,用户pop3client,密码123456的演示(通过选取下拉框中的主题切换邮件)登录界面:显示界面:点击删除按钮:五.程序实现5.1程序结构base64_dequoted.h :存放对base64和quoted的解码函数1.int DecodeQuoted(const char* pSrc, unsigned char* pDst, int nSrcLen)//对quoted传输编码进行解码2.void Decode(const char *szCoded, BYTE *pOut) //对base64传输编码进行解码StructInfo.h: 根据邮件的格式,设计的一个结构体struct MailInfo{CString m_Subject; //邮件的主题CString s_Time; //邮件发送时间CString s_Person; //邮件的发送人CString m_Contex; //邮件的内容CString m_Code; //邮件的编码};PopClient.cpp: 存放对pop3的命令操作:USER,PASS,STAT,LIST,RETR,DELE,QUIT bool ConToServer(const char* sName) //连接pop3服务器,sName为pop3服务器名字或者ip;bool LoginToServer(const char *uName,const char *uPass) //登陆POP3服务器,用户名为uName,用户密码为uName;bool RecvFromServer(vector<MailInfo> &m_Info) //从POP3服务器获取邮件信息,将信息存储在容器m_Info中;bool DeleteFromServer(int index) //从POP3服务器删除某个邮件,index指定删除邮件的标示号bool QuitFromServer() //从pop3服务器退出int RecvData(void *pData, int nLen) //接收nLen长度的流,在接收大数据量邮件的时候,需要循环读取流void StringToStruct(const char * msgBuf,MailInfo &mailInfo) //将获取的邮件字符串流,转换到对应的结构体mailInfo中,便于以后显示和操作int GetContent(char *destStr,CString &dStr,CString code) //获取邮件正文进行传输编码解码,并将编码转换为GBK,存储在dStr中,code为正文的编码int GetGBKSubject(char *destStr,CString &dStr) //将destStr进行qp或base64解码后,转换为GBK,存储于dStr中int GetAdress(char *destStr,CString &dStr) //找出邮箱的地址,为<>之间的内容,或者直接为“From:”后面的值,存储于dStr中LoginDlg.cpp:用于登录对话框,接收用户输入的pop3服务器地址,用户名和密码,调用PopClient.cpp中的函数连接服务器,登录服务器PClientDlg.cpp:用于显示邮件的主题,时间,发件人,内容等信息的对话框,还可以进行删除操作和退出操作。

中国移动手机邮箱系统之POP3方案(windows平台)

中国移动手机邮箱系统之POP3方案(windows平台)

中国移动手机邮箱系统POP3方案北京无限立通通讯技术有限责任公司2007.12目录1、手机邮箱系统结构图 (3)2、手机邮箱系统结构简介 (3)3、设备在网络中的位置 (4)4、邮件代理网关(CEF) (4)4.1概述 (4)4.2邮件代理网关功能描述 (5)5、业务特征 (6)6、对邮件服务器的要求 (7)7、邮件代理网关部署需求 (7)8、邮件代理网关的硬件配置要求 (7)9、终端流程 (8)9.1终端收取邮件数据流程 (8)1、手机邮箱系统结构图2、手机邮箱系统结构简介手机邮箱业务系统由邮件推送网关和邮件代理网关构成。

其中邮件代理网关部署在企业局域网内,邮件推送网关部署在中国移动集团总部。

邮件推送网关负责全国各地邮件代理网关的接入。

邮件推送网关保存和管理邮件代理网关的注册信息。

当邮件代理网关与邮件推送网关建立连接时,邮件推送网关通过认证协议对邮件代理网关进行身份验证。

邮件代理网关与企业邮件服务器相连,将用户新邮件取回加密缓存在本地,同时也可处理用户从手机终端发送的邮件;邮件代理网关还负责集团客户邮件系统与邮件推送网关的通信、协议转换等工作。

3、设备在网络中的位置手机邮箱业务系统包括一个邮件推送网关和多个邮件代理网关。

其中邮件代理网关部署在企业局域网内,与企业的邮件服务器相连接,负责企业邮件系统与邮件推送网关的安全通信、协议转换等工作。

邮件代理网关由企业IT管理员操作和管理。

邮件推送网关与短信网关和手机终端相连,保存和管理邮件代理网关的注册信息,保证邮件代理网关和无线终端的可靠通信。

4、邮件代理网关(CEF)4.1概述邮件代理网关部署在企业局域网内,与企业邮件服务器相连,随时获取邮件到达信息,并将邮件到达的消息传给邮件推送网关,从而将邮件主动推送至手机终端。

邮件代理网关加密缓存用户邮件,管理员可修改邮件缓存时间,默认为1个月。

如果贵司邮件服务器开放pop3/smtp协议,则可以使用pop3方案:邮件代理网关for POP3/IMAP4 v2.50(windows平台),如图所示:4.2邮件代理网关功能描述●POP3定时邮件读取模块根据用户配置,定时通过POP3协议到用户的企业邮箱中查询新邮件。

pop3

pop3

10.6接收电子邮件的程序实例10.6.1实例程序的目的和实现的技术要点通过这个实例,读者可以进一步了解POP3的有关原理和内容。

程序的用户界面如图10-9所示:图10-9 pop3电子邮件接收程序的用户界面这个实例不太复杂,用户可以利用某个网站的pop3电子邮件接收服务器来接收你在该网站的电子邮箱里的信件。

首先填入pop3服务器地址、邮箱用户名和口令,并决定是否要删除邮箱里的邮件;然后点击“连接”按钮,程序会与服务器建立TCP连接,然后发送用户名和口令,经过验证,进入POP3会话。

通过命令交互,将邮箱中的所有邮件取回。

在此过程中,左下方的多文本列表框(RichTextBox)会显示全部的会话信息。

信件全部下载完毕后,左上方的组合列表框中就有了所有信件的标题字段。

用户可以从中选择一封信件,查看或者存储。

然后可以断开连接。

实例只介绍了接收邮件,提取信头标题字段的有关内容,能正确显示符合Rfc822规范的邮件。

由于目前邮件结构非常复杂,限于篇幅,程序没有对收到的信件作进一步的分析,也没有对编码的信息进行译码,读者看到的是收信的原始信息,有兴趣的读者可以进一步扩展程序的功能,例如,对信件进行MIME格式分析,将附件提取出来。

程序实现的技术要点是:1.运用Windows的消息驱动机制除了由MFC创建的应用程序类和对话框类以外,程序从CAsyncSocket类派生了自己的套接字类,并为它添加了OnConnect()、OnClose()和OnReceive()三个事件处理函数。

程序的会话过程几乎完全是由FD_READ消息驱动的。

建立连接后,服务器会返回信息,接到命令后,服务器也会返回信息。

当信息到达客户端套接字的接收缓冲区时,会触发FD_READ 消息,并自动执行OnReceive()函数。

该函数接收服务器发来的信息,进行分析处理,然后再发送相应的命令。

这命令又会引来服务器的响应,又会触发客户端的FD_READ消息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青海民族大学课程设计报告课程类别:本科课程名称:TCP/IP协议原理课程设计课程代号:XXXXXX指导教师:***POP3邮件客户端姓名:***学号:**********院系:计算机学院专业:网络工程班级:14网本课程设计报告提交时间:2016 年12月日目录1课程设计内容 (1)2课程设计要求 (1)2.1功能要求 (1)3概要设计 (3)3.1功能模块图 (3)3.2功能模块描述 (4)4详细设计 (5)4.1功能流程图 (5)4.2重点设计 (7)5测试与调试 (11)6心得体会 (13)参考文献 (28)POP3邮件客户端1课程设计内容设计并实现POP3邮件客户端系统,要求能够向POP服务器发送命令,并接受POP服务器返回的响应和数据,程序设计具备以下功能模块:(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操作系统环境中,建议使用Visual C++编程工具实现。

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是Visual C++进行开发的一种主要模式。

2.4 POP3协议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中添加如下全局变量:#define MAX_SIZE 65535再在MailClientDlg类中添加如下私有成员:bool RecvRespond();bool SendCommanf();char Command[MAX_SIZE];char Respond[MAX_SIZE];bool RespondStatue;SOCKET Socket;再按Ctrl+W进入MFC ClassWizard,选择Member Variable,为控件添加成员变量,如图所示步骤4:在资源视图中选择对话框,双击“链接”按钮,为之创建响应函数OnConnect(),双击“接收”按钮,为之创建响应函数OnReceive(),双击“删除”按钮,为之创建响应函数OnDelete()。

双击“退出”按钮,为之创建响应函数OnQuit().步骤5:添加相关代码。

5测试与调试5.1测试目的检查POP3邮件客户端程序是否能够与现有的邮件服务器如:163、QQ进行通信,是否从邮件服务器上下载邮件到本地主机上。

5.2测试环境Win XP系统visual C++6.05.3测试结果客户端建立之后,连接国内现有的服务器系统,证明能够与主流服务器系统进行通信,具体的通信界面如下图所示与服务器取得联系之后,对目标邮件进行下载接收,证明邮件可以正常下载到本地主机,具体的接收界面如下图所示。

5.4结果分析经过测试,该邮件客户端各个功能均能实现,POP3端口能与国内现有的主流服务器系统(如:163、126、sina、sohu、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。

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

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 : implementation file//#define MAX_SIZE 4096#include "stdafx.h"#include "MailClient.h"#include "MailClientDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CMailClientlg : public CDialog{public://{{AFX_DATA(CMailClientlg)enum { IDD = IDD_ABOUTBOX };enmu{IDD=IDD_MAILCLIENT_DIALOG};CString m_Address;CString m_Login;CString m_Mail;CString m_Password;CString m_Account;//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTprotected://{{AFX_MSG(CAboutDlg)afx_msg void OnConnect();afx_msg void OnQuit();afx_msg void OnRecevice();adx_mag void Ondelete();//}}AFX_MSGDECLARE_MESSAGE_MAP()private:bool RecvRespond();bool SendCommand();char Command[MAX_SIZE];char Respond[MAX_SIZE];bool RespondStatue;SOCKET Socket;};//MailClientDlg.cpp:imlementation file#include "stdafx.h"#include "MailnClient.h"#include "MailnClientlg.h"#include "winsock.h"void CMailClientDlg::OnConnect(){UpdataData(true);WSADATA WSAData;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;}int IpAddress;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_in serveraddr;memset(&severaddr,0,sizeof(severaddr));severaddr.sin_family=AF_INET;severaddr.sin_port=htons(110);severaddr.sin_addr.s_addr=IpAddress;int nConnect;nConnect=connect(Socket,(sockaddr*)&severaddr,sizeof(severaddr)); if(nConnect==SOCKET_ERROR){MessageBox("链接建立失败!");closesocket(socket);WSACleanup();return;}m_Login+=Client: "Connect to";m_Login+=m_Address;m_Login+="...\r\n";if(!RecvRespond())return;else{if(!RecvRespond()){m_Login+="Sever: ";m_Login+=Respond;}else{MessageBox("链接响应错误!");closesocket(Socket);WSACleanup();return;}}memset(Command,0,MAX_SIZE);memcpy(Command,"USER",strlen("USER "));memcpy(Command+strlen("USER"),m_Account,strlen(m_Account)); memcpy(Command+strlen("USER")+strlen(m_Account),"\r\n",2);if(!SendCommand())return;m_Login+="Client:";m_Login+=Command;if(!RecvRespond())return;else{if (RespondStatue==true){m_Login+="Servere:";m_Login+=Respond;}else{MesssageBox("USER响应错误!");closesocket(Socket);WSACleanup();return;}}memset(Command,0MAX_SIZE);memcpy(Command,"PASS",strlen("PASS"));memcpy(Command+strlen("PASS"),m_Password,strlen(m_Password)); memcpy(Command+strlen("PASS")+strlen(m_Password),"\r\n",2);if(!SendCommand());return;m_Login+="Client:PASS******\r\n";if(RecvRespond())return;else{if(RespondStatue==true){m_Login+="Server";m_Login+=Respond;}else{MessageBox("PASS响应错误!");closesocket(Socket);WSACleanup();return;}}UpdateData(false);}void CAboutDlg::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMailClientDlg dialogCMailClientDlg::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// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMailClientDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{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);//}}AFX_DATA_MAP}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)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMailClientDlg message handlersBOOL CMailClientDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CMailClientDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CMailClientDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CMailClientDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CMailClientDlg::On(){// TODO: Add your control notification handler code here}void CMailClientDlg::OnConnect(){UPdateData(true);WSADATA WSAData;// TODO: Add your control notification handler code here }void CMailClientDlg::OnQuit(){// TODO: Add your control notification handler code here memset(Command,0,MAX_SIZE);memcpy(Command,"QUIT",strlen("QUIT"));memcpy(Command+strlen("QUIT"),"\r\n",2);if(!SendCommand)return;m_Login+="Client";m_Login+=Command;if(!RecvRespond())return;else{if(RespondStatue==true)m_Login+="Server:";m_Login+=Respond;m_Mail="";}else{MessageBox("QUIT响应错误!");closesocket(Socket);WSACleanup();return;}UpdateDate(false);closesocket(Socket);WSACleanup();}bool CMailentDlg::RecvRespond(){int nRecv;memset(Respond,0,MAX_SIZE);nRecv=recv(Socket,Respond,MAX_SIZE,0);if(Recv==SOCKET_ERROR){MessageBox("Socket接收失败!");closesocket(Socket);return false;}if(memamp(Respond,"+OK",3)==0)RespondStatue=true;elseRespondStatue=false;return true;}bool CMailClientDlg::SendCommand(){int nSend;nSend=send(Socket,Command,strlen(Command),0); if(nSend==SOCKET_ERROR){MessageBox("Socket发送失败!");closesocket("Socket");WSACleanup();return false;return true;}void CMailClientDlg::OnReceive(){// TODO: Add your control notification handler code here memset(Command,0,MAX_SIZE);memcpy(Command+strlen("STAT"),"\r\n",2)if(!SendCommand())return;m_Login+="Client: ";m+Login+=Command;if(!RecvRespond())return;else{if(RespondStatue==true){m_Login+="Sever: ";m_Login+=Respond;}else{MessageBox("STAT响应错误!");WSACleanup();return;}}memset(Command,0,MAX_SIZE);memcpy(Command,"RETR",strlen("RETR"));memcpy(Command+strLen("RETR"),"\r\n",3);if(!SendCommand())return;m_Login+="Client: ";m_LOgin+=Command;if(!RecvRespond())return;else{if(RespondStatue==ture){m_Login+="sever: ";m_Login+=Respond;}else{MessageBox("RETR响应错误!");closesocket(Socket);WSACleanup();return;}}while(true){char MailBuf[MAX_Size];memset(MailBuf,0,MAX_SIZE,0);int nRecv;nRecv=recv(Socket,MailBUf,MAX_SIZE,0);if(nRecv==SOCKET_ERROR){MessageBox("RETR接收错误!");closesocket(Socket);WSACleanup();return;}m_Mail+=MailBuf;if(strstr(MailBuf,"\r\n.\r\n"))break;}UpdateData(false);}void CMailClientDlg::Ondelete(){// TODO: Add your control notification handler code here memset(Command,0,MAX_SIZE);memcpy(Command,"DELE",strlen("DELE "));memcpy(Command+strlen("DELE "),"1\r\n",3);if(!OnSendCommand())return;m_Login+="Client: ";m_Login+=Command;of(!RecvRespond())return;else{if(RespondStatue==true){m_Login+="Server: "m_Login+=Respond;}else{MessageBox("DELE响应错误!");return;}}UpdateData(false);closesocket(Socket);WSACleanup();}参考文献[1]谭浩强. C程序设计(第4版). 清华大学出版社, 2010.[2]苏小红. C语言程序设计(第1版). 高等教育出版社, 2011.[3](美)H.M.Deitel & P.J.Deitel. C程序设计教程. 机械工业出版社, 2005.[4]朱岩、高伟编著标准Windows程序设计Visual C++与MFC及Win32API的应用,1997,北京,人民邮电出版社。

相关文档
最新文档