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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
php下使用SMTP发邮件的代码
Jan 10 PHP
php 引用(&amp;)详解
Nov 20 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
php在数组中查找指定值的方法
Mar 17 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
PHP运行模式汇总
Nov 06 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
Yii2 queue的队列使用详解
Jul 19 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
改进的IP计数器
2006/10/09 PHP
基于mysql的论坛(1)
2006/10/09 PHP
Snoopy类使用小例子
2008/04/15 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JS中递归函数
2016/06/17 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
Python对象体系深入分析
2014/10/28 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
爷爷追悼会答谢词
2014/01/24 职场文书
药品促销活动方案
2014/02/14 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS