簡體   English   中英

使用javax.mail時獲取服務器輸出

[英]Get server output while using javax.mail

我需要實現POP3,IMAP和SMTP服務器的可用性和身份檢查,方法是將它們連接到它們,並在執行上述操作時授權並比較預期的服務器輸出與接收到的服務器輸出。

我正在使用Java,所以不要重蹈覆轍,我也在使用javax.mail實現。 一切工作正常,除了無法獲取記錄的服務器輸出。 唯一可用的來源是調試輸出:

Properties props = new Properties();
props.setProperty("mail.pop3.debug", "true");
Session session = Session.getInstance(props, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
session.setDebug(true);
session.setDebugOut(new PrintStream(out));
Store store = new POP3Store(session, getUrl());
store.connect();
store.close();
out.toString(); // < the only available communication output

我能夠獲取服務器輸出的唯一方法是解析調試輸出(搜索以“ S:”開頭的行並讀取字符串,直到找到以“ C:”開頭的行或流的末尾)。

樣本POP3通信調試輸出如下所示:

DEBUG POP3: connecting to host "pop.gmail.com", port 995, isSSL true
S: +OK Gpop ready for requests from *** ***
C: CAPA
S: +OK Capability list follows
USER
RESP-CODES
EXPIRE 0
LOGIN-DELAY 300
X-GOOGLE-VERHOEVEN
UIDL
.
C: USER ***
S: +OK send PASS
C: PASS ***
S: +OK Welcome.
C: QUIT
S: +OK Farewell.

我在這里看到的唯一其他選擇是使用自定義SocketFactory(設置為“ mail。*。socketFactory”屬性),這將生成我最初設置的Socket,從中可以獲取服務器輸入流。

我相信有一個更好的解決方案。 你看到了嗎?

提前致謝。

我只是通過一個插座連接並提供確切的測試用例。 我不會將Javamail用於此特定應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM