站長資訊網
        最全最豐富的資訊網站

        詳解使用php-imap查詢操作郵件收件箱

        本篇文章帶大家介紹使用php-imap查詢操作郵件收件箱。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

        最近在業務場景里有接收解析用戶主動發送的郵件,使用php-imap實現了這一需求,記錄一下。

        確定實現方式

        讀取郵件的協議有POP3IMAP兩種,區別:POP3協議允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作,不會反饋到服務器上。IMAP提供webmail與電子郵件客戶端之間的雙向通信,客戶端的操作都會反饋到服務器上,對郵件進行的操作,服務器上的郵件也會做相應的動作。

        需求要求處理完用戶的郵件以后,將郵件標記為已處理,因此選用IMAP協議。

        安裝依賴

        本地、服務器php均需要安裝imap擴展。在項目的composer.json中添加php-imap(https://github.com/barbushin/php-imap)擴展如下:

        "require": {   "php-imap/php-imap": "^3.1", },

        配置相關服務

        namespace applibraryservicemail;  use PhpImapExceptionsConnectionException; use PhpImapMailbox;  /**  * 收郵件服務郵件API接口  * Class PlayService  * @package applibraryservice  */ class ImapService {     public $path = '{imap.263.net:993/imap/ssl}INBOX';   // IMAP server and mailbox folder     public $login = 'user@263.cn';         // Username for the before configured mailbox     public $password = 'pwd';                   // Password for the before configured username     public $dir = null;        // Directory, where attachments will be saved (optional)     public $encoding = 'UTF-8';   // Server encoding (optional)      public $mailbox;      public function __construct()     {         $this->mailbox = new Mailbox(             $this->path,             $this->login,             $this->password,             $this->dir,             $this->encoding         );     }

        獲取所有未讀郵件列表

        public function unSeenList() {     try {         $mail_ids = $this->mailbox->searchMailbox('UNSEEN');     } catch (ConnectionException $ex) {         die('IMAP connection failed: ' . $ex->getMessage());     } catch (Exception $ex) {         die('An error occured: ' . $ex->getMessage());     }      // If $mailsIds is empty, no emails could be found     if (!$mail_ids) {         die('Mailbox is empty');     }      try {         $info = $this->mailbox->getMailsInfo($mail_ids);     } catch (ConnectionException $ex) {         echo "IMAP connection failed: " . $ex;         die();     }     return ['ids' => $mail_ids, 'list' => $info]; }

        將某些郵件標記為已讀

        /**  * @param array $mail_ids  * @return mixed  */ public function markRead($mail_ids) {     return $this->mailbox->markMailsAsRead($mail_ids); }

        搜索指定主題的郵件并標記為已讀

        $imap = new ImapService(); $condition = 'UNSEEN  SUBJECT "' . $title . '" SINCE "' . date('Y-m-d', strtotime('-1 days')) . '" FROM ' . $mail; $data['mail'] = $imap->mailbox->searchMailbox($condition); if (!empty($data['mail'])) {     $data['info'] = $imap->mailbox->getMailsInfo($data['mail']);     if ($params['mark'] == 1) {         $data['mark'] = $imap->markRead(array_column($data['info'], 'uid'));     } }

        推薦學習:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产99久久久国产精品~~牛| 久久久亚洲精品蜜桃臀| 99精品在线免费| 精品国产三级a∨在线| 中文字幕日韩精品有码视频| 国产精品片在线观看手机版 | 国产精品大白天新婚身材| 亚洲伊人久久精品影院| 久久久久久青草大香综合精品| 99久久精品免费| 欧美+亚洲+精品+三区| 97久久精品无码一区二区| 人人妻人人澡人人爽人人精品电影 | 国产亚洲精品资在线| 久久精品国产亚洲一区二区| 国产在线精品一区二区中文| 日韩精品一区二区三区中文| 亚洲高清国产拍精品青青草原 | 中文字幕乱码中文乱码51精品| 精品伦精品一区二区三区视频| 2021最新国产精品一区| 欧美成人精品一区二区三区| 久久99精品国产| 国产精品久久毛片完整版| 国产成人A人亚洲精品无码| 久久精品99久久香蕉国产色戒| 亚洲精品~无码抽插| 亚洲一区精品无码| 少妇精品无码一区二区三区| 亚洲国产成人精品无码区在线观看 | 91嫩草亚洲精品| 久久99热精品| 老司机91精品网站在线观看| 欧美精品在线一区二区三区| 老司机国内精品久久久久| 97精品国产高清自在线看超 | 国产偷亚洲偷欧美偷精品| 你懂的国产精品| 国产精品手机在线观看你懂的| 国产精品亚洲欧美大片在线看| 好湿好大硬得深一点动态图91精品福利一区二区|