前段时间一直在研究邮件获取和内容的提取,具体实例就是比如在阿里购物后,当商家发货后会收到一份已发货邮件,邮件里会包含订单号和运单号(要的就是这个 嘿嘿),至于干嘛用,在这就不多说明了
这边用的方法是IMAP不是POP3,网上有很多POP3的邮件接收类,我开始也尝试用这个类,但当邮箱邮件比较多时,执行会很慢,动不动还会超时。IMAP好像默认只接收最近几百份邮件,不会全部遍历整个邮箱邮件。对我来说这样挺好。
不说了 贴代码 嘿嘿: https://github.com/zpblog/php-imap
<?php date_default_timezone_set("Asia/Shanghai"); $mailServer="imap.126.com"; //IMAP主机 $mailLink="{{$mailServer}:143}INBOX" ; //imagp连接地址:不同主机地址不同 $mailUser = '******@126.com'; //邮箱用户名 $mailPass = '********'; //邮箱密码 $mbox = imap_open($mailLink,$mailUser,$mailPass); //开启信箱imap_open $totalrows = imap_num_msg($mbox); //取得信件数 for ($i=$totalrows;$i>$totalrows-50;$i--){ //我这边只取最近50封 $headers = imap_fetchheader($mbox, $i); //获取信件标头 $Subjects = preg_match_all('/\bSubject:(.*?)[\n\r]/s', $headers,$Subject); //提取邮件的标题 $alifahuo = "Subject: =?GBK?B?sKLA77DNsM3M4dDRxPqjusL0vNLS0b6tt6K79aOh?="; //阿里巴巴提醒您:卖家已经发货! $sub1 = trim($Subject[0][1]); $sub2 = trim($alifahuo); //我只需要发货的邮件内容 if($sub1 == $sub2){ $mailBody = imap_fetchbody($mbox, $i, 1); //获取信件正文 preg_match_all('/<td[^>]+>\s+([0-9A-Z]{2,})\s+<\/td>/isx',$mailBody,$odnum); //提取订单号运单号 echo $odnum[1][0]; echo "<br/>\r\n"; echo $odnum[1][1]; } echo "<br/> ---------------------- <br/>\r\n"; } imap_close($mbox); echo date("Y-m-d H:i:s"); ?>
友情提醒:需要imap模块支持,还有邮箱开启IMAP。
附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 5.3 利用suhosin禁用eval函数2019-03-01
记一次PHP7.2+pthreads多线程环境搭建2018-11-02
根据PayPal通知要求,让CentOS下的Nginx支持TLS 1.22018-05-08
Windows目标服务器端口监测脚本微信通知2016-08-25
Outlook POP模式发件收到退信: 530 Authentication required2016-07-25
树莓派系列(八):PHP之以root权限执行Python GPIO脚本2016-01-16
Exchange2003服务器上删除或导出某封邮件2015-12-23
Exchange用Foxmail设置POP3发邮件提示550 Unable to relay解决方法2015-12-17
phpExcelReader读取Excel报错解决方法2015-11-18
windows电脑开机短信或邮件通知2015-08-26