[协议] POP3简单邮件传输协议

Post Office Protocol - Version 3  邮局协议版本3 RFC1939

user username    认可
pass password    认可  执行成功则状态转换
apop name,digest  认可  一种安全传输口令的办法,执行成功导
               致状态转换,请参见RFC 1321
stat        处理  请求server回送邮箱统计资料,如邮件数、邮件总字节数
uidl n       处理  server返回用于该指定邮件的唯一标识,如果没有指定,返回所有的
list n       处理  server返回指定邮件的大小等
retr n       处理  server返回邮件的全部文本
dele n       处理  server标记删除,quit命令执行时才真正删除
rset        处理  撤消所有的dele命令
top n,m       处理  返回n号邮件的前m行内容,m必须是自然数
noop        处理  server返回一个肯定的响应
quit            client希望结束会话。如果server处于"处理"状态,则现在进入"更新"状态,
                            删除那些标记成删除的邮件。如果server处于"认可"状态,
              则结束会话时server不进入"更新"状态
POP3邮件服务器通过侦听TCP端口110提供POP3服务。客户端软件读取邮件之前,需要事先与服务器建立TCP连接。连接成功后,POP3服务器会向该客户端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。
 客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。这个过程经历了三个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。

POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。所有响应也以回车换行结束(发送命令也是)。状态码有两种:“确定”(“+OK”)和“失败”(“-ERR”)。对于客户端发送的每一条命令,服务器都会回送状态码。因此在客户端程序中,可以通过服务器回送的状态码对应的字符,即判断第一个字符是“+”号还是“-”号来确定服务器是否正确响应客户端发送的命令。

1. 授权状态
客户端首先与POP3服务器建立TCP连接,服务器接收后发送一个单行的确认信息。例如“+OK POP3 server ready”,此时POP3会话就进入了授权状态。在授权状态,客户需要向服务器发送用户名和密码进行确认。
假设用C表示客户端(Client),S表示服务器端(Server),下面是客户端接收邮件前需要与服务器传输的信息。
1) 发送用户名。
    语法形式:USER <用户名>
    功能:将客户的用户名发送到服务器。
    服务器返回:+OK正确的用户名;-ERR错误的用户名。
    示例:C:USER myname@126.com
          S:+OK welcome on this server.
    上述两行代码的含义为:客户端发送“USER myname@126.com”,服务器端回送信息“+OK welcome on this server.”。
2) 用户名确认成功后,需要输入密码。
    语法形式:PASS <密码>
    功能:将客户的密码发送给服务器。
    服务器返回:+OK正确的用户名;-OK错误的用户名。
    示例:C:PASS ***** 
          S:+OK myname logged in at 19:04
授权成功后,进入操作状态。
2. 操作状态
客户端向服务器成功确认了自己的身份后,POP3会话将进入操作状态,客户就可以执行POP3命令进行相应的操作。对于每个命令,服务器都会返回应答信息。下面是在操作状态中使用的命令。
(1) STAT命令
    语法形式:STAT
    功能:从服务器中获取邮件总数和总字节数。
    服务器返回:邮件总数和总字节数。
    示例:C:STAT
          S:+OK 2 320
(2) LIST命令
    语法形式:LIST
    功能:从服务中获得邮件列表和大小。
    服务器返回:列出邮件列表和大小。
    示例:C:LIST( LIST命令针对pop3邮箱会首先返回+ok 邮件总数 邮件总大小,但对于pop邮箱则只返回+ok状态字符,因此最好还是通过STAT来判断邮件总数)
          S:+OK 2 messages (320 octets)
          S:1  120
          S:2  200
          S: .
(3) RETR命令
    语法形式:RETR  <邮件的序号> 
    功能:从服务器中获得一个邮件。
    服务器返回:+OK成功;-ERR错误。
    示例:C:    RETR 1
          S:+OK 120 octets
          S:<服务器发送信件1内容>
          S: .
    注意,这里的“.”是单独发送的。
 (4) DELE命令
    语法形式:DELE <邮件的序号> 
    功能:服务器将邮件标记为删除,当执行QUIT命令时才真正删除。( 可以通过RSET 命令进行撤消删除 )
    服务器返回:+OK成功;-ERR错误。
    示例:C:DELE 1
          S:+OK 1 Deleted
    当客户发送QUIT命令时,会话进入更新状态。
3. 更新状态
    当客户在操作状态下发送QUIT命令后,会话进入更新状态。
    QUIT命令
    语法形式:QUIT 
    功能:关闭与服务器的连接。
    服务器返回:+OK;-ERR。
    示例:C:QUIT
          S:+OK
    然后服务器自动断开与该客户端的TCP连接。
邮件的未读和已读

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值