2009-06-29 91 views
2

我使用java郵件api 1.4.1來獲取新郵件。兩個類正在用來獲取電子郵件,然後解析它。 「GetMail」類與郵件服務器(Gmail,雅虎等)進行通信並獲得消息對象。然後將消息對象傳遞給另一個類「MailFormatter」類,然後解析消息對象,獲取電子郵件頭(From,To,Subject等),然後解析Multipart內容以獲取主體和附件。 「郵件獲取」和「郵件格式化」過程都非常耗費資源,這些類將作爲單獨的Web應用程序來實現。此應用程序將監視多個電子郵件ID的新電子郵件。如果這些(「GetMail」和「MailFormatter 「)被實現爲獨立的Web應用程序,我如何將消息對象從」GetMail「應用程序傳遞給」MailFormatter「應用程序?是否有一種方法可以將獲取的消息對象保存在某個位置(「GetMail」和「MailFormatter」應用程序共有的位置),以便「GetMail」可以將消息對象保存在該位置,以及那麼「MailFormatter」應用程序可以從該位置讀取「消息」對象並執行解析過程。消息對象不能被序列化。如果他們不能被序列化我怎麼能堅持java郵件消息對象的狀態?請幫我解決這個問題。從應用程序之間傳遞java郵件消息對象

回答

1

MimeMessage可以用writeTo(OutputStream)序列化,並用構造函數MimeMessage(Session,InputStream)反序列化。

所以一條消息可以從一個webapp發送到另一個。

+0

感謝您的回答。所以我可以使用FileOutputStream並將對象保存爲文件,然後通過MimeMessage構造函數讀取它。 FileOutputStream是堅持消息的最佳方式嗎?如果持久消息不是MimeMessage呢?如何通過輸入流讀取非MIME消息? MimeMessage構造函數也要求會話對象讀取消息輸入流。如何在其他Web應用程序中創建此會話對象? – jezhilvalan 2009-06-30 07:39:00

0

我意識到我沒有回答你的問題(!),但我想知道你是否正在解決正確的問題。解析是如此費時,它需要分裂成不同的過程。你是否嘗試過通過一個線程收集消息,並通過另一個線程異步解析它們?我懷疑這比執行某種形式的IPC更簡單。

如果要連載不在Serializable對象,看看XStream,這將連載大多數事情從XML到/。

相關問題