【问题标题】:Javamail library, tracking specific emailsJavamail 库,跟踪特定的电子邮件
【发布时间】:2012-02-07 16:50:59
【问题描述】:

我正在开发一个 Java 应用程序,它可以读取来自 GMAIL 的所有电子邮件,并将它们保存在包含电子邮件某些属性的自制类对象上的运行时间。现在我想删除一个电子邮件对象,当我这样做时,我希望它也从互联网上删除。为此,我需要一些信息来查询 GMAIL 帐户以删除我所指的特定电子邮件。有没有办法做到这一点?也许通过保存标题然后搜索?我找不到好办法。

【问题讨论】:

    标签: java email gmail jakarta-mail


    【解决方案1】:

    我假设您正在使用 IMAP 访问 GMAIL。然后您可以存储消息,致电Message.setFlag(Flag.DELETED) 然后删除文件夹,或自己搜索文件夹。或者您可以搜索Google Gmail api 并找到更好的方法。例如你可以使用the unique message ID

    更新这是一个可以帮助你的谷歌项目:java-gmail-imap。还有 a companion project 用于 OAuth 身份验证(运行示例需要)

    【讨论】:

      【解决方案2】:

      我建议你看看James

      Apache James 项目提供了一组丰富的开源模块和库,用 Java 编写,与 Internet 邮件通信相关,这些模块和库内置于高级企业邮件服务器中。

      【讨论】:

        【解决方案3】:

        这取决于您访问消息和删除消息之间的时间跨度。如果它很短,并且文件夹仍然打开,您可以设置 DELETED 标志并关闭文件夹以删除邮件。

        但我假设您需要稍后找到该消息。在这种情况下,您应该了解 IMAP UID。有关详细信息,请参阅 UIDFolder interface in JavaMailIMAP spec。本质上,您需要跟踪文件夹的 UIDVALIDITY 值和消息的 UID 值。当您返回该文件夹时,您可以通过检查 UIDVALIDITY 值来确保它是同一个文件夹,然后根据其 UID 查找消息。

        【讨论】:

        • 实际上,正如我所建议的,GMail 有一个跨文件夹有效的 UID 扩展 link
        • 是的,但目前没有简单的方法可以使用 JavaMail 访问它。
        • This project 可以提供帮助。我不认为这很困难:/ 无论如何使用 GMail 特定的扩展更好,因为他会提供更好的体验(想想线程、标签和原始搜索功能)
        猜你喜欢
        • 1970-01-01
        • 2011-06-30
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多