用PHP收发邮件
这几天在做一个用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分别进行解码。 先写到这里,后续......
相关文档:
php中substr的用法详解
php.net中关于substr的说明很简单:
start
If start is non-negative, the returned string will start at the start 'th position in string , counting from zero. For instance, in the string 'abcdef', the character at position 0 is 'a', the character at position 2 is 'c', and so for ......
in_array(value,array,type)
in_array 作用是用于查看 value 是否在 array 中存在,如果参数 value 是字符串,且 type 参数设置为 true,则搜索区分大小写。则 in_array 是 区分大小写 的。
有一点需要注意,当 array 中包含 value 的值,则返回 true; 但是,如果两者参数之间相等,则返回 false
例如:
$str = 'a';
......
如何判断ip地址合法性
if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) echo "is ipn";
email的正则判断
eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$", $email);
检测ip地址和mask是否合法的例子
$ip = '192.168.0.84';
$mask = '255.255.255.0';
$network = '192.168.0';
$ip = ......