这几天在做一个用php收发邮件的项目,才发现有太多的东西要学了,为了以后方便,或者给还没有接触这方面的人方便,我把这些知识给记录下来。
 
先看看有哪些方法可以实现 php收发邮件。
1、用fsocket这种方法要用到pop3的命令,这种方法连接或者接收的速度比较快。
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        更新     
 
 
第一步:fsockopen(地址,端口,$error)
第二步:可以开始发送上面的命令了。
这里比较麻烦的就是读取pop返回的信了。
可以用fgets去获取,但是经常会到文件末尾时一直没有找到feo而出现超时情况。
 
第二种办法就是用imap了,记得把php.ini的imap打开
网上有许多高手写好的php类了,下来就可以用了。我试过,发现这种速度比较慢。
 
用php接收来的邮件一般都是有编码过的。所以接收到邮件后要对数据进行编码。
目前这种编码主要有两种方式,可以用imap_base64和quoted_printable_decode分别进行解码。
 
先写到这里,后续......