【问题标题】:How to connect to mail server to use mime4j?如何连接到邮件服务器以使用 mime4j?
【发布时间】:2014-06-19 03:09:16
【问题描述】:

我正在尝试从 Javamail 迁移到 mime4j,希望能够减少解析邮件的麻烦。但是我还没有设法找出如何连接到邮件服务器然后使用 mime4j 来解析邮件。

Javamail 通过 IMAP 或 POP3 提供与邮件服务器的会话和连接,然后您可以从中读取邮件。据我所知,mime4j 没有提供任何等效的东西。

那么如何连接到邮件服务器以使用 mime4j?我可以将 Javamail 与 mime4j 结合使用吗?

我尝试使用 javamail Message.getInputStream 方法来获取我传递给 mime4j 的 DefaultMessageBuilder.parseMessage 的输入流。但是结果不是我所期望的:对于包含纯文本部分和 html 部分的多部分消息,只创建了一个 TextBody。我怀疑这是因为 DefaultMessageBuilder.parseMessage 期待整个消息的流,而不仅仅是正文,而且 javamail Message.getInputStream 只提供正文。

事实上,我只对正文感兴趣,因为这是导致 Javamail 出现问题的原因,但解析整个消息(如果我可以将其作为 Javamail 的输入流)也可以。

非常感谢任何帮助!

【问题讨论】:

    标签: java email jakarta-mail mime4j


    【解决方案1】:

    如果您使用的是 POP3,则所有邮件解析都发生在 JavaMail 的客户端。 您是否查看过可以在 JavaMail 中设置的许多属性来配置如何处理解析错误?

    如果您使用 IMAP,则大部分解析由服务器完成。您在使用 JavaMail 时仍然遇到什么样的解析错误?它们是解析电子邮件内容的问题,还是解析 IMAP 协议消息的问题?

    有了您遇到的问题的更多详细信息,我或许可以帮助您配置 JavaMail 以供您使用。

    如果您真的想使用另一个 MIME 消息解析器,则需要使用 Message.writeTo 方法来获取消息的整个 MIME 内容,您可以将其传递给其他库进行解析。

    【讨论】:

    • 我一直在使用 IMAP,但是在使用 Javamail 的 Body 上使用方法时遇到挂起(而不是错误)。我尝试了各种建议的方法来强制在客户端进行解析(例如制作消息的副本),但都没有奏效。也许只使用 POP3 会更好。刚刚尝试了 Message.writeTo 并且它有效。我之前尝试过,但一定是误解了结果。谢谢!
    • 挂起通常意味着您的服务器已损坏。同样,我很高兴帮助您使 JavaMail 正常工作,但我需要更多关于您遇到的问题的详细信息。如果您不想在这里处理,请随时通过 javamail_ww@oracle.com 将详细信息发送给我。
    • 感谢您提供帮助比尔。我将坚持使用你现在给我的 Mime4j 解决方案。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2013-09-10
    • 2011-02-24
    • 1970-01-01
    • 2015-11-22
    • 2011-10-12
    相关资源
    最近更新 更多