您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
php获取邮箱收件箱列表实例
发布时间:2023-02-10 11:41:15编辑:雪饮阅读()
需要先安装imap扩展
<?php
//IMAP主机
$mailServer="imap.qq.com";
//以前的地址imap.exmail.qq.com,现在的地址imap.qq.com
//imagp连接地址:不同主机地址不同
$mailLink="{{$mailServer}:143}INBOX";
//邮箱用户名
$mailUser = '1509272975@qq.com';
//授权码
$mailPass = 'exhidmbfafdajdcj';
//开启信箱imap_open
$mbox = \imap_open($mailLink,$mailUser,$mailPass);
//即便有错误信息,但也不一定就无法收件,只是一个排查错误的参考,比如授权码错误这种硬性错误才会导致无法收件
var_dump("错误信息:".imap_last_error());
//取得信件数(相当于分页大小)
$totalrows = imap_num_msg($mbox);
for ($i=1;$i<$totalrows;$i++){
$overview=imap_fetch_overview($mbox,$i);
//var_dump($overview[0]);
var_dump(editSubject($overview[0]->subject).",发件人:".editSubject($overview[0]->from));
//var_dump();
var_dump("\r\n------------------------------------------\r\n");
}
function my_print($data){
var_export($data,true);
}
function editSubject($value){
/*
*主要以邮件主题解码为主,腾讯企业邮返回的数据主要有以下几种格式
1."subject": "=?UTF-8?B?5o+Q6YaS77yB77yB5pys5pyI5pyJ5pyq5o+Q5Lqk5pel5oql77yB?="
2."subject": "=?utf-8?Q?5YWz5LqO5YWs5Y+457uE57uH5p625p6E6LCD5pW0?="
3."subject": "=?gb2312?Q?2017=C4=EA10=D4=C2=B9=A4=D7=CA=CC=F5?="
4."subject": "=?GB2312?B?sr/K8Mnqx+u1pQ==?="
主要是分为utf8以及gb2312这两种,后面分别带着B跟Q,代表是base64_decode解码或者是quoted_printable_decode
*
* 因为当前的代码环境及文件格式都是utf8的,所以需要将所有的gn2312都通过iconv转为utf8,
* 否则返回数据给前端时会出现问题,另外这个方法对于非utf8及gb2312以外的情况作了特殊处理,
* 直接返回原数据,以后遇到这种特殊情况不会报错,可以直接看到方便后续补充
* ps:imap进行收件操作,效率真的很低,很慢。。只获取20封邮件大概从请求接口到发起imap到接受数据(不包括解析,数据只包括信件标头)需要7秒以上(保守估计,受网络影响很严重),
* 如果使用imap直接获取单个邮件内容,需要8-10秒,视情况而定,很坑。。
*
* */
$valuearr1 = explode('?',$value); //通过问号分割字符串,获取到有用的数据
if($valuearr1[1] == 'UTF-8' || $valuearr1[1] == 'utf-8'){
if($valuearr1[2] == 'Q'){
return quoted_printable_decode($valuearr1[3]);
}else{
return base64_decode($valuearr1[3]);
}
}else if($valuearr1[1] == 'GB2312' || $valuearr1[1] == 'gb2312'){
if($valuearr1[2] == 'Q'){
return iconv('gb2312','UTF-8//IGNORE',quoted_printable_decode( $valuearr1[3]));
}else{
return iconv('gb2312','UTF-8//IGNORE',base64_decode( $valuearr1[3]));
}
}else{
return $value;
}
}
?>
测试运行:
/www/server/php/73/bin/php -c /www/server/php/73/etc/php.ini test.php
关键字词:php,获取,邮箱,收件箱,列表,实例