登录  /  注册
首页 > php教程 > php手册 > 正文

PHP使用IMAP收取邮件

php中文网
发布: 2016-06-06 09:52:19
原创
1443人浏览过

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

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

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

 

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

附上IMAP函数库:

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




智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号