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协议的接收邮件服务器,用来接收电子邮件的。 C++电子邮件客户端的设计与实现(5):http://www.youerw.com/jisuanji/lunwen_9453.html