2013-10-29 39 views
1

我已經撰寫了一個示例代碼,可以在給定的日期範圍內爲Outlook電子郵件帳戶的一個文件夾生成電子郵件。我使用Java郵件API 1.5和Java 7無法使用SearchTerm搜索Outlook電子郵件

爲了得到消息,我已經寫了下面,搜索自1月1970電子郵件到前30-OCT-2013碼 -

Date FutureDate = new Date(2013 - 1900, 9, 30, 00, 00, 00); 
Date PastDate = new Date(1970 - 1900, 0, 1); 
SearchTerm newerThen = new ReceivedDateTerm(ComparisonTerm.LE, FutureDate); 
SearchTerm olderThen = new ReceivedDateTerm(ComparisonTerm.GE, PastDate); 
SearchTerm andTerm = new AndTerm(olderThen, newerThen); 
Message[] msg = folder.search(andTerm); 

此代碼正在返回零長度消息,即自1970年1月1日至2013年10月30日之前未找到任何消息,儘管我的文件夾包含此範圍之間的204封電子郵件。

令人驚訝的是,相同的代碼工作正常,以搜索Gmail的文件夾以及雅虎IMAP帳戶的電子郵件。

以下是Outlook的「收件箱」文件夾中的協議跟蹤包含204個電子郵件,但沒有搜索通過日期範圍搜索詞的電子郵件 -

DEBUG: setDebug: JavaMail version ${mail.version} 
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc.,${mail.version}] 
DEBUG IMAPS: mail.imap.fetchsize: 16384 
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false 
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000 
DEBUG IMAPS: mail.imap.appendbuffersize: -1 
DEBUG IMAPS: mail.imap.minidletime: 10 
DEBUG IMAPS: trying to connect to host "imap-mail.outlook.com", port 993, isSSL true 
* OK Outlook.com IMAP4rev1 server version 17.3.0.0 ready (BLU451-IMAP84) 
A0 CAPABILITY 
* CAPABILITY IMAP4rev1 CHILDREN ID NAMESPACE AUTH=PLAIN AUTH=XOAUTH2 SASL-IR 
A0 OK CAPABILITY completed 
DEBUG IMAPS: AUTH: PLAIN 
DEBUG IMAPS: AUTH: XOAUTH2 
DEBUG IMAPS: protocolConnect login, host=imap-mail.outlook.com, [email protected], password=<non-null> 
DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed 
DEBUG IMAPS: AUTHENTICATE PLAIN command result: A1 OK [email protected] authenticated successfully 
A2 CAPABILITY 
* CAPABILITY IMAP4rev1 CHILDREN ID NAMESPACE 
A2 OK CAPABILITY completed 
Store gmail:imaps://mymail%[email protected] 
DEBUG IMAPS: connection available -- size: 1 
A3 SELECT Inbox 
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft) 
* 204 EXISTS 
* 0 RECENT 
* OK [UNSEEN 101] Message 101 is first unseen 
* OK [UIDVALIDITY 376204] UIDs valid 
* OK [UIDNEXT 100235] Predicted next UID 
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft)] Limited 
A3 OK [READ-WRITE] SELECT completed. 
TOTAL MAILS: 204 
A4 SEARCH DELETED ALL 
* SEARCH 1 
A4 OK SEARCH Completed 
FOLDER: Inbox 
FUTURE DATE: Wed Oct 30 00:00:00 IST 2013 
PAST DATE: Thu Jan 01 00:00:00 IST 1970 
A5 SEARCH OR SINCE 1-Jan-1970 ON 1-Jan-1970 OR BEFORE 30-Oct-2013 ON 30-Oct-2013 ALL 
* SEARCH 
A5 OK SEARCH Completed 
MESSAGE FOUND: 0 

雅虎收件箱的協議跟蹤只包含一個電子郵件,而且搜索與搜索詞的電子郵件 -

DEBUG: setDebug: JavaMail version ${mail.version} 
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc.,${mail.version}] 
DEBUG IMAPS: mail.imap.fetchsize: 16384 
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false 
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000 
DEBUG IMAPS: mail.imap.appendbuffersize: -1 
DEBUG IMAPS: mail.imap.minidletime: 10 
DEBUG IMAPS: trying to connect to host "imap.mail.yahoo.com", port 993, isSSL true 
* OK [CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI] IMAP4rev1 imapgate-0.7.68_14.446672 imap411.mail.bf1.yahoo.com 
DEBUG IMAPS: AUTH: PLAIN 
DEBUG IMAPS: AUTH: LOGIN 
DEBUG IMAPS: AUTH: XYMCOOKIE 
DEBUG IMAPS: AUTH: XYMECOOKIE 
DEBUG IMAPS: AUTH: XYMCOOKIEB64 
DEBUG IMAPS: AUTH: XYMPKI 
DEBUG IMAPS: protocolConnect login, host=imap.mail.yahoo.com, [email protected], password=<non-null> 
DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed 
DEBUG IMAPS: AUTHENTICATE PLAIN command result: A0 OK AUTHENTICATE completed - Mailbox size in bytes is 33054009 
A1 CAPABILITY 
* CAPABILITY IMAP4rev1 ID NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ 
A1 OK CAPABILITY completed 
Store gmail:imaps://mymail%[email protected] 
DEBUG IMAPS: connection available -- size: 1 
A2 SELECT Inbox 
* 1 EXISTS 
* 0 RECENT 
* OK [UIDVALIDITY 1379569582] UIDs valid 
* OK [UIDNEXT 7322] Predicted next UID 
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft) 
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft)] Permanent flags 
* OK [HIGHESTMODSEQ 5940064101685223608] 
A2 OK [READ-WRITE] SELECT completed; now in selected state 
TOTAL MAILS: 1 
A3 SEARCH DELETED ALL 
* SEARCH 
A3 OK SEARCH completed 
FOLDER: Inbox 
FUTURE DATE: Wed Oct 30 00:00:00 IST 2013 
PAST DATE: Thu Jan 01 00:00:00 IST 1970 
A4 SEARCH OR SINCE 1-Jan-1970 ON 1-Jan-1970 OR BEFORE 30-Oct-2013 ON 30-Oct-2013 ALL 
* SEARCH 1 
A4 OK SEARCH completed 
MESSAGE FOUND: 1 

請指引我在哪裏所做的更改通過搜索項獲得電子郵件d創建吃了範圍? Outlook不支持使用SearchTerm搜索日期嗎?

由於

尼拉姆夏爾馬

+1

這個詞似乎比它應該更復雜....許多服務器不支持正確的高階搜索條件。嘗試將您的條款更改爲LT和GT,以避免產生OR條款。 – Max

+0

@Max謝謝你,你的建議改變現在正在工作,但相同的代碼在一週前工作正常,它通過LE&GE條款正確地獲取電子郵件,明天當我檢查它時停止工作,我可以放心多少LT&GT將在未來工作? –

+0

你不能,這是雲服務的本質。然而,簡單更好,更有可能工作。 – Max

回答

1

貌似outlook.com服務器被打破;請將問題報告給Microsoft。

+0

感謝比爾,正如我在上述評論中提到的那樣,直到一週前,相同的代碼工作正常,從明天開始,我無法獲得該日期條款的列表。對於上面提出的變化,我能保證多少能在不久的將來發揮作用(LT&GT)? –

+0

我不知道爲什麼outlook.com會在上週打破。我想你問的是郵件服務器有多少錯誤。我無法回答這個問題...... :-) –

相關問題