我想知道,在调用Folder.close(true)时,JavaMail API如何清除IMAP消息?根据文档,方法“close”的唯一参数“expunge”确定是否要删除之前用\ Deleted标记标记的所有消息。但是,在source code (V. 1.4.7)中,我看不到方法close(类IMAPFolder)中的任何代码,它会删除任何内容或甚至进行任何操作。任何人都可以帮我理解expunge参数的效果吗?
非常感谢您提前和美好的一天。
答案 0 :(得分:1)
IMAPFolder.class,第1310行:
// If the expunge flag is set, close the folder first.
if (expunge && protocol != null)
protocol.close();
IMAPProtocol.class,第1201行:
/**
* CLOSE Command.
*
* @see "RFC2060, section 6.4.2"
*/
public void close() throws ProtocolException {
simpleCommand("CLOSE", null);
}
https://tools.ietf.org/html/rfc2060#section-6.4.2:
CLOSE命令将永久删除当前选定的内容 邮箱设置了\ Deleted标志的所有邮件,并返回 从选定状态验证状态。没有未标记的EXPUNGE 回复已发送。
如果邮箱是,则不会删除任何邮件,也不会给出错误 由EXAMINE命令选择或以其他方式选择为只读。
即使选择了邮箱,也可以使用SELECT,EXAMINE或LOGOUT命令 可以在不事先发出CLOSE命令的情况下发布。 SELECT, EXAMINE和LOGOUT命令隐式关闭当前选中的 邮箱没有做删除。但是,当有很多消息时 删除,CLOSE-LOGOUT或CLOSE-SELECT