用PHP实现POP3邮件的收取
POP协议简介
本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。 现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行交流,各大网站也几乎都推出了自己的基于WEB 的免费邮件系统。在本文里,笔者将介绍一些Email实现的一些原理。同时我们假设你对于PHP的编程有一定的基础,对于TCP/IP协议也有一定的了解。 POP 协议简介 POP的全称是 Post Office Protoco ,即邮局协议,用于电子邮件的接收,现在常 用的是第三版 ,简称为 POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、删除等。另外一种用于接收信件的邮件是 IMAP 协议,现在发展很快,在本文中,我们暂不讨论。 POP服务器一般使用的是TCP的110号端口,如果你用的是Foxmail的话,在其收邮件的时候,你可以看到其信息提示窗口有这么一些命令: “正在连接到 62.123.23.123:110"; "USER BOSS_CH"; "PASS.............."; 下面让我们来看一段 与 POP3 服务器对话的实录: telenet pop.china.com 110 +OK AIMC POP service (mail2.china.com) is ready. USER boss_ch +OK Please enter password for user PASS ****** +OK boss_ch has 1 messages (750 octets) STAT +OK 1 750 LIST +OK 1 messages (750 octets) 1 750 RETR 1 +OK 750 octets Received: from smtp2.ptt.js.cn([202.102.24.37]) by china.com(JetMail 2.5.3.0) with SMTP id jm4839cc4227; Sat, 23 Sep 2000 05:31:21 -0000 Received: from chenjunqing ([61.155.120.6]) by smtp2.ptt.js.cn (Netscape Messaging Server 4.15) with SMTP id G1BRHJ03.V07 for Date: Sat, 23 Sep 2000 13: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: FoxMail 3.1 [cn] Mime-Version: 1.0 Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 8bit Message-ID: 您好! 这是一个邮件的小示例 QUIT +OK Pop server at 以下对几个常用的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 更新 退出 用PHP实现POP3收取邮件的类 现在让我们来用PHP实现一个通过POP3协议收取信件的类吧,这个类中所用到的一些sock操作的函数,不另做特殊说明,请参考php的有关资料。通过这个实例,相信你也会和我一样,感觉到PHP中对于sock操作的灵活、方便和功能的强大。 首先,我们来说明一下这个类中需要用到的一些内部成员变量:(这些变量应该都是对外封闭的,可是由于php对类的成员变量没有private与publice之类的分别,只好就这么直接定义了。这是PHP的一个令人遗憾的地方。) 1.成员变量说明 class pop3 { var $hostname=""; // POP主机名 var $port=110; // 主机的POP3端口,一般是110号端口 var $timeout=5; // 连接主机的最大超时时间 var $connection=0; // 保存与主机的连接 var $state="DISCONNECTED"; // 保存当前的状态 var $debug=0; // 做为标识,是否在调试状态,是的话,输出调试信息 var $err_str=''; // 如果出错,这里保存错误信息 var $err_no; //如果出错,这里保存错误号码 var $resp; // 临时保存服务器的响应信息 var $apop; // 指示需要使用加密方式进行密码验证,一般服务器不需要 var $messages; // 邮件数 var $size; //各邮件的总大小 var $mail_list; // 一个数组,保存各个邮件的大小及其在邮件服务器上序号 上一篇:用PHP发送有附件的电子邮件 下一篇:邮件列表mailman在aix5.1实现 更多相关文章
|
推荐文章
精彩文章
|