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 获取远程网页内容的函数
Sep 08 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
php中return的用法实例分析
Feb 28 PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
php接口隔离原则实例分析
Nov 11 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python正则表达式使用范例分享
2016/12/04 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
详解Python3中ceil()函数用法
2019/02/19 Python
django之自定义软删除Model的方法
2019/08/14 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python3中数组逆序输出方法
2020/12/01 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
应届毕业生的自我鉴定
2013/11/13 职场文书
企划主管岗位职责
2013/12/12 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
nginx内存池源码解析
2021/11/20 Servers