Javamail邮件,设置为在文件夹以只读模式打开时显示?
我有一个IMAPJavamail邮件,设置为在文件夹以只读模式打开时显示?,java,jakarta-mail,imap,Java,Jakarta Mail,Imap,我有一个IMAP文件夹以只读方式打开,我想在我的程序中的特定点将特定消息设置为查看 我试图找到一种方法将模式从READ\u ONLY动态更改为READ\u WRITE,但显然唯一的方法是关闭文件夹,然后再次打开它 我写了一个强大的方法,实现了上述目标,但我真的很不满意这种情况 如果我从一开始就以READ\u WRITE的方式打开文件夹,则在处理过程中,邮件会被标记为READ,这不是我希望邮件被标记为READ的时间点 这里有一个偷看的方法,我写的,不要傻笑 /** * @param messag
文件夹
以只读方式打开,我想在我的程序中的特定点将特定消息设置为查看
我试图找到一种方法将模式从READ\u ONLY
动态更改为READ\u WRITE
,但显然唯一的方法是关闭文件夹
,然后再次打开它
我写了一个强大的方法,实现了上述目标,但我真的很不满意这种情况
如果我从一开始就以READ\u WRITE
的方式打开文件夹,则在处理过程中,邮件会被标记为READ
,这不是我希望邮件被标记为READ
的时间点
这里有一个偷看的方法,我写的,不要傻笑
/**
* @param message The message to be processed.
* @param read True to mark as READ, False to mark as UNREAD.
*/
public static void markMessageAsRead(Message message, boolean read) {
try {
//Getting required variables
Folder messageFolder = message.getFolder();
int initialFolderMode = messageFolder.getMode();
boolean initialFolderOpenState = messageFolder.isOpen();
//If the folder is readonly then lets set it to readwrite
if(initialFolderMode == Folder.READ_ONLY) {
if(initialFolderOpenState) {
messageFolder.close(false);
}
messageFolder.open(Folder.READ_WRITE);
}
//Make sure folder is open (incase the above if didn't evaluate)
if(!initialFolderOpenState) {
messageFolder.open(Folder.READ_WRITE);
}
//Marking message as seen/unseen
message.setFlag(Flags.Flag.SEEN, read);
//Now lets revert the folder to it's state before it came here
if(initialFolderOpenState) {
if(!messageFolder.isOpen()) {
messageFolder.open(initialFolderMode);
}
} else {
if(messageFolder.isOpen()) {
messageFolder.close(false);
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
有没有一种方法可以更灵活地实现我想要的功能?传统的解决方案是以读写模式打开文件夹,然后在不设置
seen
标志的情况下提取数据时使用该功能。peek命令不设置seen
标志