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


Posted in PHP onAugust 07, 2017

本文实例讲述了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:  目前的状态信息。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 文章采集正则代码
Dec 28 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
10个php函数实用却不常见
Oct 13 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
zend framework重定向方法小结
May 28 PHP
PHP数组实例详解
Jun 26 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php文件上传、下载和删除示例
Aug 28 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 #PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 #PHP
php封装的mongodb操作类代码
Aug 06 #PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 #PHP
php mysql数据库操作类(实例讲解)
Aug 06 #PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 #PHP
PHP实现腾讯与百度坐标转换
Aug 05 #PHP
You might like
如何开始收听短波广播
2021/03/01 无线电
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
Python中for循环详解
2014/01/17 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python 实现目录复制的三种小结
2019/12/04 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
社会学专业求职信
2014/02/24 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
2014年预算员工作总结
2014/12/05 职场文书
计生个人工作总结
2015/02/28 职场文书
学校安全管理制度
2015/08/06 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书