登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

RFC1939  

2009-08-25 21:42:41|  分类: Delphi |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

POP3协议要点,更详细的信息可以查看 RFC1939
   
(1) POP3命令由一个命令和一些参数组成。所有命令以一个CRLF对结束
(2) 命令和参数由可打印的ASCII字符组成,它们之间由空格间隔
(3) POP3响应由一个状态码和一个可能跟有附加信息的命令组成。所有响应也是由CRLF对结束
(4) 有两种状态码,"确定"   ("+OK")和"失败"   ("-ERR")。
(5) 当所有信息发送结束时,发送最后一行,包括一个结束字符(十进制码46,也就是".")和一个CRLF对。
(6) 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。
   当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后最后重返认可状态。如下图
   
   等待连接      身份确认         QUIT命令
     ——|认可|————— |处理|——————|更新|
           |__________________________________|
                 重返认可状态

一个最小的,成功的Client-Server会话过程
   POP3   Client                               POP3   Server
   Socket()                                    listen()  
   Connect()   ------------------------------> accept()  
               <------------------------------ +OK 发送确认消息   (进入"确认"状态)
   发送USER命令------------------------------>
               <-----------------------------  +OK 发送确认消息  
   发送PASS命令------------------------------>
               <-----------------------------  +OK 发送确认消息     (进入"操作"状态)
   发送QUIT命令------------------------------>
               <-----------------------------  +OK 发送确认消息     (进入"更新"状态)
                                                   如果客户在"确认"状态下发送QUIT后,会话并不进入"更新"状态

可以在命令行(cmd.exe)里测试一下: (注意输入命令时是看不见的)
 c:\telnet pop3.163.com 110 //连接网易的邮件服务器
 +OK   coremail ....        //服务器返回+OK
 USER  'yourusername'       //客户端发出用户名,可能在yourusername上需要一对单引号
 PASS  'yourpassword'       //客户端发出密码,可能在yourpassword上需要一对单引号
 +OK   mm   nn              //返回邮件数和大小
 STAT                       //得到邮箱的状态
 +OK   xxx   xxx            //返回邮件数和大小

客户可以发出的命令列表以及含义
命令  参数      状态  描述    
-------------------------------------------------------------------------------------
USER   username   认可  此命令与下面的pass命令若成功,将导致状态转换
PASS   password   认可
APOP   Name,Digest 认可  Digest是MD5消息摘要,windows系统多不支持
-------------------------------------------------------------------------------------
STAT   None     处理    请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL   [Msg#]    处理    返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST   [Msg#]       处理  返回邮件数量和每个邮件的大小
RETR   [Msg#]    处理  返回由参数标识的邮件的全部文本
DELE   [Msg#]       处理  服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET   None      处理  服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP    [Msg#]    处理  服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP   None     处理  服务器返回一个肯定的响应
--------------------------------------------------------------------------------------
QUIT   None     更新

Foxmail 和 Outlook 使用 pop3时的异同
假定服务器上有三封邮件等待客户机接收。用foxmail与OE的不同之处在于foxmail每收一封标记删除一封,而Outlook则等全部接收完后再全部标记为删除最后执行quit命令。
  Foxmail                  OutLook    
-------------------------------------------
  RETR   1                   RETR     1
  DELE   1                   RETR     2
  RETR   2                   RETR     3
  DELE   2                   DELE     1
  RETR   3                   DELE     2
  DELE   3                   DELE     3
  QUIT                       QUIT
-------------------------------------------

  评论这张
 
阅读(868)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018