因需要处理公司企业邮箱被退信邮件问题:刚开始的思路是通过模拟登陆,对邮件进行抓取,(这种事情对我来说,做过了很多次,轻车熟路),不过邮箱还是有点复杂的,
后来想起做邮件发送时有用到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>: 目前的状态信息。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
Windows 11 KB5054979中的新功能以及如何解决更新问题
4 周前ByDDD
如何修复KB5055523无法在Windows 11中安装?
3 周前ByDDD
如何修复KB5055518无法在Windows 10中安装?
3 周前ByDDD
R.E.P.O.的每个敌人和怪物的力量水平
3 周前By尊渡假赌尊渡假赌尊渡假赌
蓝王子:如何到达地下室
3 周前ByDDD

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具