2014-05-02 19 views
1

我試圖從Javamail遷移到mime4j,希望解析郵件的麻煩更少。然而,我還沒有設法找出如何連接到郵件服務器,然後使用mime4j來解析消息。如何連接郵件服務器以使用mime4j?

Javamail通過IMAP或POP3向郵件服務器提供會話和連接,然後您可以從中讀取郵件。據我所知,mime4j沒有提供任何等同的東西。

那麼如何連接郵件服務器來使用mime4j?我可以將Javamail與mime4j結合使用嗎?

我已經嘗試使用javamail Message.getInputStream方法來獲取輸入流,我傳遞給mime4j的DefaultMessageBuilder.parseMessage。然而,結果並不是我所期望的:對於包含純文本部分和html部分的多部分消息,僅創建一個TextBody。我懷疑這是因爲DefaultMessageBuilder.parseMessage正在等待整個消息的流,而不僅僅是正文,但是javamail Message.getInputStream只提供了正文。

事實上,我只對正文感興趣,因爲這是造成Javamail問題的原因,但是解析整個消息(如果我可以將它作爲Javamail的輸入流)也可以。

任何幫助非常感謝!

回答

0

如果你使用的是POP3,所有的消息解析都發生在JavaMail的客戶端。 您是否看過可以在JavaMail中設置的許多屬性來配置解析錯誤的處理方式?

如果您使用的是IMAP,則大部分解析都由服務器完成。 JavaMail仍存在哪些解析錯誤?他們解析電子郵件的內容時出現問題,還是解析IMAP協議消息時出現問題?

有關您遇到的問題的更多詳細信息,我可能會幫助您配置JavaMail以爲您工作。

如果您確實想要使用其他MIME消息解析器,則需要使用Message.writeTo方法來獲取消息的整個MIME內容,您可以將其傳遞給其他庫進行解析。

+0

我一直在使用IMAP,但遇到使用Javamail(而不是錯誤)正文上使用方法時掛起。我嘗試了各種建議的方法來強制解析客戶端(如製作郵件的副本),但都沒有成功。也許只是使用POP3會更好。剛剛嘗試過Message.writeTo,它工作。我之前嘗試過,但肯定誤解了結果。謝謝! –

+0

掛起通常意味着您的服務器已損壞。同樣,我很樂意幫助您製作JavaMail,但我需要更多關於您遇到的問題的更多細節。如果您不想在此處理,請隨時通過[email protected]向我發送詳細信息。 –

+0

感謝您提供幫助Bill。我將堅持你現在給予我的Mime4j解決方案。乾杯! –

相關問題