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

        詳解使用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號
        主站蜘蛛池模板: 欧美一区二区精品久久| 一本大道久久a久久精品综合| 精品人妻人人做人人爽| 亚洲国产精品久久66| 精品久久久久久无码专区不卡| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 亚洲精品国产精品乱码不卡| 国产精品久久久久影院嫩草| 亚洲精品乱码久久久久久中文字幕 | 精品久久久久久| 蜜臀久久99精品久久久久久小说| 日韩精品无码免费视频| 国内精品久久久久久久涩爱| 51国偷自产精品一区在线视频| 国产精品久久国产精麻豆99网站 | 杨幂国产精品福利在线观看| 国产精品久久久福利| 97国产精品视频| 国产一精品一AV一免费| 无码囯产精品一区二区免费| 一区二区日韩国产精品| 四虎亚洲国产成人久久精品| 欧美精品色婷婷五月综合| 精品无码综合一区| 久久精品一区二区三区中文字幕| 国产一区二区三区欧美精品| 国产精品美女久久久免费| 亚洲国语精品自产拍在线观看 | 人妻无码久久精品| 日韩精品无码久久一区二区三| 网友偷拍日韩精品| 亚洲精品偷拍视频免费观看| 亚洲高清国产拍精品青青草原| 欧美日韩国产精品系列| 欧美久久亚洲精品| 午夜欧美精品久久久久久久| 久久久无码人妻精品无码| 国产精品多人p群无码| 国产精品一区二区久久精品| 色综合久久综精品| 国产精品高清2021在线 |