我正在开发一个Java应用程序,它可以读取来自GMAIL的所有电子邮件,并将它们的运行时间保存在自制类的对象上,该类包含电子邮件的一些属性。现在我想删除一个电子邮件对象,当我这样做时,我希望它也可以从互联网上删除。为此,我需要一些信息来查询GMAIL帐户以删除我所指的特定电子邮件。有可能这样做吗?也许通过保存标题然后搜索它?我找不到一个好办法。
答案 0 :(得分:2)
我假设您正在使用IMAP访问GMAIL。然后你可以存储消息,调用Message.setFlag(Flag.DELETED)然后删除文件夹,或自己搜索文件夹。或者也许您可以搜索Google Gmail api并找到更好的方法。例如,您可以使用the unique message ID
更新这是一个可以帮助您的Google项目:java-gmail-imap。 OAuth身份验证还有a companion project(运行示例需要)
答案 1 :(得分:0)
我建议你看看James。
Apache James Project提供了一组丰富的开源模块和库,用Java编写,与Internet邮件通信相关,构建在高级企业邮件服务器中。
答案 2 :(得分:0)
这取决于您访问邮件与删除邮件之间的时间间隔。如果它很短,文件夹仍处于打开状态,您可以设置DELETED标志并关闭文件夹以清除消息。
但我假设您需要在一段时间后找到该消息。在这种情况下,您应该了解IMAP UID。有关详细信息,请参阅UIDFolder interface in JavaMail和IMAP spec。实质上,您需要跟踪文件夹的UIDVALIDITY值和消息的UID值。当您返回该文件夹时,您可以通过检查UIDVALIDITY值确保它是同一个文件夹,然后根据其UID查找该消息。