首页 > 开发 > PHP > 正文

PHP基于IMAP收取邮件的方法示例

2024-05-04 22:46:10
字体:
来源:转载
供稿:网友

本文实例讲述了PHP基于IMAP收取邮件的方法。分享给大家供大家参考,具体如下:

因需要处理公司企业邮箱被退信邮件问题:刚开始的思路是通过模拟登陆,对邮件进行抓取,(这种事情对我来说,做过了很多次,轻车熟路),不过邮箱还是有点复杂的,

后来想起做邮件发送时有用到smtp来发送邮件,记得也可以收取邮件,在腾讯企业邮箱帮助http://service.exmail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1000584

看到IMAP和POP都可以实现收取邮件,再发现PHP有内置的IMOP函数,写了示例:

//以腾讯企业邮箱做了测试$mailServer="imap.exmail.qq.com"; //IMAP主机$mailLink="{{$mailServer}:143}INBOX" ; //imagp连接地址:不同主机地址不同$mailUser = '***'; //邮箱用户名$mailPass = '***'; //邮箱密码$mbox = imap_open($mailLink,$mailUser,$mailPass); //开启信箱imap_open$totalrows = imap_num_msg($mbox); //取得信件数for ($i=1;$i<$totalrows;$i++){  $headers = imap_fetchheader($mbox, $i); //获取信件标头  $headArr = matchMailHead($headers); //匹配信件标头  $mailBody = imap_fetchbody($mbox, $i, 1); //获取信件正文}/** * * 匹配提取信件头部信息 * @param String $str */function matchMailHead($str){  $headList = array();  $headArr = array(    'from',    'to',    'date',    'subject'  );  foreach ($headArr as $key){    if(preg_match('/'.$key.':(.*?)[/n/r]/is', $str,$m)){      $match = trim($m[1]);      $headList[$key] = $key=='date'?date('Y-m-d H:i:s',strtotime($match)):$match;    }  }  return $headList;}

附上IMAP函数库:

imap_append:  附加字符串到指定的邮箱中。imap_base64:  解 BASE64 编码。imap_body:  读信的内文。imap_check:  返回邮箱信息。imap_close:  关闭 IMAP 链接。imap_createmailbox:  建立新的信箱。imap_delete:  标记欲删除邮件。imap_deletemailbox:  删除既有信箱。imap_expunge:  删除已标记的邮件。imap_fetchbody:  从信件内文取出指定部分。imap_fetchstructure:  获取某信件的结构信息。imap_header:  获取某信件的标头信息。imap_headers:  获取全部信件的标头信息。imap_listmailbox:  获取邮箱列示。imap_listsubscribed:  获取订阅邮箱列示。imap_mail_copy:  复制指定信件到它处邮箱。imap_mail_move:  移动指定信件到它处邮箱。imap_num_msg:  取得信件数。imap_num_recent:  取得新进信件数。imap_open:  打开 IMAP 链接。imap_ping:  检查 IMAP 是否连接。imap_renamemailbox:  更改邮箱名字。imap_reopen:  重开 IMAP 链接。imap_subscribe:  订阅邮箱。imap_undelete:  取消删除邮件标记。imap_unsubscribe:  取消订阅邮箱。imap_qprint:  将 qp 编码转成八位。imap_8bit:  将八位转成 qp 编码。imap_binary:  将八位转成 base64 编码。imap_scanmailbox:  寻找信件有无特定字符串。imap_mailboxmsginfo:  取得目前邮箱的信息。imap_rfc822_write_address:  电子邮件位址标准化。imap_rfc822_parse_adrlist:  解析电子邮件位址。imap_setflag_full:  配置信件标志。imap_clearflag_full:  清除信件标志。imap_sort:  将信件标头排序。imap_fetchheader:  取得原始标头。imap_uid:  取得信件 UID。imap_getmailboxes:  取得全部信件详细信息。imap_getsubscribed:  列出所有订阅邮箱。imap_msgno:  列出 UID 的连续信件。imap_search:  搜寻指定标准的信件。imap_last_error:  最后的错误信息。imap_errors:  所有的错误信息。imap_alerts:  所有的警告信息。imap_status:  目前的状态信息。            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表