因需要处理公司企业邮箱被退信邮件问题:刚开始的思路是通过模拟登陆,对邮件进行抓取,(这种事情对我来说,做过了很多次,轻车熟路),不过邮箱还是有点复杂的,
后来想起做邮件发送时有用到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

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。