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 Try Catch异常测试
Mar 01 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
php定时执行任务设置详解
Feb 06 PHP
php安装swoole扩展的方法
Mar 19 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
php准确获取文件MIME类型的方法
Jun 17 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
TP5框架页面跳转样式操作示例
Apr 05 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一些错误处理的方法与技巧总结
2013/08/10 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
lib.utf.js
2007/08/21 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
21行Python代码实现拼写检查器
2016/01/25 Python
深入理解python中的select模块
2017/04/23 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python多分支if语句的使用
2020/09/03 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
scrapy-splash简单使用详解
2021/02/21 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS