C++电子邮件客户端的设计与实现(5)
时间:2017-06-19 21:46 来源:毕业论文 作者:毕业论文 点击:次
2-1SMTP 模型 2.2.2 SMTP命令描述和应答码 Email的通信过程是基于TCP/IP协议的,所以程序首先得用Winsocket建立和SMTP服务器的连接。成功后要进行会话,SMTP有其认识的一套命令。 1) 问候(HELO) 此命令用于客户机向服务器标识自己。通常在连接到服务器之后,向服务器发送该命令。如果HELO命令完成,客户机和服务器都准备好继续SMTP会话的其余部分。 2) 邮件来自(MAIL ) 此命令用于指定邮件的发送者。实际上这个命令所带的参数并不十分重要,当投递失败时,服务器将邮件返回给发送者,该命令指定返回的信箱地址。 3) 收信人(RCPT) 此命令用于确定收信人的地址。 4)信体数据内容 (DATA) 该命令用于向SMTP服务器请求发送邮件的邮件内容。 5) SEND OR MAIL (SOML) 此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,或者传送到邮箱中。对于每个接收者,如果接收者终端打开,邮件内容将被传送到接收者的终端上,否则就送到接收者的邮箱中。 6) SEND AND MAIL (SAML) 此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,并传送到邮箱中。如果接收者终端打开,邮件内容将被传送到接收者的终端上和接收者的邮箱中。 7) 复位 (RSET) 此命令用于复位连接状态。服务器接到这个命令后,将清除以前所接收的命令请求及内容,复位会话状态到发出HELO命令时的状态。 8) 验证 (VRFY) 该命令用于验证指定的字符串是否是一个合法的邮箱。它的判断依据是字符@是否出现和@之后的字符串中是否含有合法的dot地址。 9) 扩展 (EXPN) 此命令要求接收者确认参数指定了一个邮件发送列表,如果是一个邮件发送列表,就返回表中的成员。如果这是(已经知道的)用户名,返回用户的全名和指定的邮箱。 10)帮助 (HELP) 此命令用于请求服务器发送回来各种类型的帮助信息。 11)空操作 (NOOP) 此命令什么都不做,不改变和服务器的会话状态。 12)退出 (QUIT) 该命令用来终止与SMTP的会话。 13) TURN (TURN) 此命令指定接收方要么发送OK应答并改变角色为发送SMTP,要么发送拒绝信息并保持自己的角色。 以上介绍SMTP的基本命令,命令发出后,服务器会返回一条响应。响应由3位数字组成,后接一个空格和文本描述信息。 211系统状态或系统帮助响应 214帮助信息 220<domain>服务就绪 221<domain>服务关闭 250要求的邮件操作完成 251用户非本地,将转发向<forward-path> 354开始邮件输入,以"."结束 421<domain>服务未就绪,关闭传输信道 450要求的邮件操作未完成,邮箱不可用 451放弃要求的操作;处理过程中出错 452系统存储不足,要求的操作未执行 500 语法错误,命令不可识别 501参数格式错误 502命令不可实现 503错误的命令序列 504命令参数不可实现 550要求的邮件操作未完成,邮箱不可用 551用户非本地,请尝试<forward-path> 552过量的存储分配,要求的操作未执行 553邮箱名不可用,要求的操作未执行 554操作失败 根据上述介绍理论,SMTP客户程序的基本操作步骤如下: 1用Winsocket连接上SMTP服务器 2打开邮件发送的对话 3指定发送者的邮箱 4指定接受者的邮箱 5发送邮件的内容 6结束邮件发送对话 2.3 POP3协议 2.3.1 POP3协议简介 POP3(Post Office Protocol 3) POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 (责任编辑:qin) |