急求:在JavaMail中,如何获取messages中的所有“未读”的邮件;通过uid能实现么?具体是如何实现的呢?

2024年11月19日 17:27
有3个网友回答
网友(1):

pop3由于本身不提供Flag的功能,所以一般来说没有办法判断通过pop3得到的message是否已读

但是有些服务商会在header里面加入message是否已读的信息
可以尝试用message.getHeader(String name)得到header的信息,比如用
message.getHeader("Status")
或许可以得到是否已读的信息(或许而已,因为这条语句成功与否取决于服务商是否加入该信息,以及使用的名字是否为"Status")
如果需要查看所有的header来判断这个服务商是否加入了message的状态信息,可以用
message.getAllHeaders() (返回的是Enumeration

)
来获取所有的header然后一个个检查,如果里面没有的话,就没有办法了.

********************************************************

imap提供Flag,可以用
message.getFlags().getSystemFlags();
得到 Flag[], 然后去看其是否不为空,并且包括Flag.SEEN ,如果是,则为已读,反之则未读.

例如下面这个method可以返回message已读的状态 (true=已读,false=未读):

需要的imports:
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Flags.Flag;

代码:
private boolean isRead(Message message)
throws MessagingException {
Flag[] flags = message.getFlags().getSystemFlags();
for (Flag f : flags) {
if (f.equals(Flag.SEEN))
return true;
}
return false;
}

希望这些可以帮到你

网友(2):

pop3不会告诉你是否是新邮件 统统收下来自己判断 imap好像可以 是好像 你去查一下

网友(3):

窗格 (导航窗格:Outlook 主窗口左边的列,其中包括诸如“快捷方式”或“邮件”等窗格,并在每个窗格中包含快捷方式或文件夹。单击文件夹可以显示文件夹中的条目。)中的“收件箱”文件夹旁边看到未读邮件数。可在“导航窗格”中的“搜索文件夹” (搜索文件夹:虚拟文件夹,其中包括满足特定搜索条件的所有电子邮件项的视图。这些项继续存储在一个或多个 Outlook 文件夹中。)下的“未读邮件”文件夹中找到未读邮件,在这里未读邮件按文件夹排列。

在“导航窗格”中,单击“搜索文件夹”旁边的加号 (+) 以显示其子文件夹。
单击“未读邮件”文件夹。
未读项目将显示在该项目列表中。

提示 为了使“未读邮件”文件夹更容易看到,请将其拖至“收藏夹”窗格中。
要点 如果您删除搜索文件夹,则该搜索文件夹中显示的电子邮件不会被删除,因为这些项目从不保存在搜索文件夹中,只是在其中被查看。但是,如果您打开或选择搜索文件夹中显示的一个或多个电子邮件并删除这些电子邮件,则会从存储它们的 Microsoft Office Outlook 文件夹中删除这些邮件。

“未读邮件”文件夹是预定义的搜索文件夹之一。如果在“导航窗格”中的“搜索文件夹”下看不到此文件夹,则可重新创建。