大家好
我用php撈gmail信件時遇到一個問題
imap_open撈gmail的信無法全部撈出
透過下面code可撈出了指定條件的信件
有一部分信件封存了,不過我沒指定INBOX應該就是全部信件吧?
$mbox = imap_open('{imap.gmail.com:993/imap/ssl/novalidate-cert}', $mailUser, $mailPass);
$uid_list = imap_search($mbox, 'FROM "XXX@OOO.com"', SE_UID, "UTF-8");
在做後續分析的時候才發現缺了一封4月份的信,
查了一下發現8月之前的都沒有.....
我需要撈出全部的信 ~"~
還是gmail僅限抓大約3個月內的信件?
那要如何抓超過3個月的信件?
還是改指定標籤(都屬於某個子標籤中)?
異想天開會不會跟POP3跟imap的差異??
我改用POP3就有撈出4月份的 0.0{imap.gmail.com:993/imap/ssl/novalidate-cert}
有沒有漏信我要檢查看看才知道,
目前結論是
協定|取得資料範圍| 連線語法 | 速度(個人感覺)
--|--|--
POP3 | 全部撈出 | {pop.gmail.com:995/pop3/ssl/novalidate-cert}
| 慢
IMAP | 僅近3個月 | {imap.gmail.com:993/imap/ssl/novalidate-cert}
| 快
不過有人知道為啥會這樣嗎?
2021-06-02
今日發現,當把gmail的封存信件移回收件夾內,10~20分後就撈的到了@@
挺坑的XD
有人知道要怎麼直接去撈"所有郵件"這個標籤的郵件??
根據這篇的說明
不要用 ALL
「分批」抓你的 ALL 郵件比較會 work
以我目前所遇到的狀況...有ALL沒ALL撈到的結果是一樣的,3個月前的資料憑空消失...(我先拿掉ALL)
但登入gmail網頁版看還是存在的...
不妨試試他提到的時間區間
$sinceDate = "31 December 2015";
$beforeDate = "06 January 2016";
$emails = imap_search($inbox,'SINCE "'.$sinceDate.'" BEFORE"'.$beforeDate.'"' );
結果一樣'FROM "soc365@chtsecurity.com" SINCE "31 December 2015" BEFORE "06 January 2022"'
先單純用 SINCE ... BEFORE ... (時間改近期一點看看)
若成功後再加回 FROM