本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。
现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行交流,各大网站也几乎都推出了自己的基于WEB的免费邮件系统。在本文里,笔者将介绍一些Email实现的一些原理。同时我们假设你对于PHP的编程有一定的基础,对于TCP/IP协议也有一定的了解。
POP协议简介
POP的全称是PostOfficeProtoco,即邮局协议,用于电子邮件的接收,现在常用的是第三版,简称为POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、删除等。另外一种用于接收信件的邮件是IMAP协议,现在发展很快,在本文中,我们暂不讨论。
POP服务器一般使用的是TCP的110号端口,如果你用的是Foxmail的话,在其收邮件的时候,你可以看到其信息提示窗口有这么一些命令:
1 2 3 |
“正在连接到 62.123.23.123:110"; "USERBOSS_CH"; "PASS.............."; |
下面让我们来看一段与POP3服务器对话的实录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
telenetpop.china.com110 +OKAIMCPOPservice(mail2.china.com)isready. USERboss_ch +OKPleaseenterpasswordforuser. PASS****** +OKboss_chhas1messages(750octets) STAT +OK1750 LIST +OK1messages(750octets) 1750 RETR1 +OK750octets Received:fromsmtp2.ptt.js.cn([202.102.24.37])bychina.com(JetMail2.5.3.0) withSMTPidjm4839cc4227;Sat,23Sep200005:31:21-0000 Received:fromchenjunqing([61.155.120.6])bysmtp2.ptt.js.cn (NetscapeMessagingServer4.15)withSMTPidG1BRHJ03.V07for ;Sat,23Sep200013:34:31+0800 Date:Sat,23Sep200013:34:18+0800 From:=?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?= To:boss_ch@china.com Subject:=?ISO-8859-1?Q?=D3=CA=BC=FE=CA=BE=C0=FD?= X-mailer:FoxMail3.1[cn] Mime-Version:1.0 Content-Type:text/plain;charset="GB2312" Content-Transfer-Encoding:8bit Message-ID: 您好! 这是一个邮件的小示例 QUIT +OKPopserveratsigningoff. |
以下对几个常用的POP3命令作一个简单的介绍 :
命令 参数 状态 描述
——————————————
USER username 认可 此命令与下面的pass命令若成功,将导致状态转换
PASS password 认可
APOP Name,Digest认可 Digest是MD5消息摘要
——————————————
STAT None 处理 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
UIDL [Msg#] 处理 返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的
LIST [Msg#] 处理 返回邮件数量和每个邮件的大小
RETR [Msg#] 处理 返回由参数标识的邮件的全部文本
DELE [Msg#] 处理 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET None 处理 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
TOP [Msg#] 处理 服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOP None 处理 服务器返回一个肯定的响应,不做任何操作。
——————————————
QUIT None 更新退出