iT邦幫忙

0

php imap_open 撈gmail的信無法全部撈出

大家好

我用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}

不過有人知道為啥會這樣嗎?

看看你漏的那些信是否都是複合式的from。
有可能是你的「FROM "XXX@OOO.com"」這個條件造成問題的。
舜~ iT邦高手 1 級 ‧ 2020-11-04 10:55:23 檢舉
您指的複合式是什麼意思?
這些信每封都是來自寄件者XXX@OOO.com,同時寄給十幾個人的信,有些信有轉寄出去進行討論的我就不要了,只要最初來自寄件者XXX@OOO.com的即可
舜~ iT邦高手 1 級 ‧ 2020-11-04 14:46:33 檢舉
改用POP3會撈出一些用imap會漏掉的東西...
不過有人知道為啥會這樣嗎?

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-04 10:36:24

根據這篇的說明
不要用 ALL
「分批」抓你的 ALL 郵件比較會 work

看更多先前的回應...收起先前的回應...
舜~ iT邦高手 1 級 ‧ 2020-11-04 10:58:09 檢舉

以我目前所遇到的狀況...有ALL沒ALL撈到的結果是一樣的,3個月前的資料憑空消失...(我先拿掉ALL)
但登入gmail網頁版看還是存在的...

不妨試試他提到的時間區間

$sinceDate = "31 December 2015";
$beforeDate = "06 January 2016"; 
$emails = imap_search($inbox,'SINCE "'.$sinceDate.'" BEFORE"'.$beforeDate.'"' );
舜~ iT邦高手 1 級 ‧ 2020-11-04 12:04:39 檢舉

結果一樣
'FROM "soc365@chtsecurity.com" SINCE "31 December 2015" BEFORE "06 January 2022"'

先單純用 SINCE ... BEFORE ... (時間改近期一點看看)
若成功後再加回 FROM

舜~ iT邦高手 1 級 ‧ 2020-11-04 12:53:48 檢舉

只有'SINCE "31 December 2015" BEFORE "06 January 2022"'的話,撈出來最早是6月

試試看
'SINCE "01 March 2020" BEFORE "01 June 2020"'
如果無效
我也沒轍了...

舜~ iT邦高手 1 級 ‧ 2020-11-04 13:44:54 檢舉

imap_search回傳false
沒有錯誤訊息...

我要發表回答

立即登入回答