gpt4 book ai didi

java - 是否可以使用 IMAP + 寻呼?

转载 作者:行者123 更新时间:2023-12-02 08:36:57 26 4
gpt4 key购买 nike

我需要将 IMAP 客户端制作为 Web 应用程序

我实现的排序功能为:

   //userFolder is an Object of IMAPFolder
Message[] messages = userFolder.getMessages();

Arrays.sort(messages, new Comparator<Message>()
{
public int compare(Message message1, Message message2)
{
int returnValue = 0;
try
{
if (sortCriteria == SORT_SENT_DATE)
{
returnValue = message1.getSentDate().compareTo(message2.getSentDate());
}
} catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}

if (sortType == SORT_TYPE_DESCENDING)
{
returnValue = -returnValue;
}

return returnValue;
}
});

代码片段并不完整,只是简短的SORT_SENT_DATE、SORT_TYPE_DESCENDING 是我自己的常量。

实际上这个解决方案工作正常,但分页逻辑失败作为一个基于 Web 的应用程序,我不能期望服务器为每个用户加载所有消息并对它们进行排序(我们确实遇到过 >1000 个并发用户,每个邮箱有 >1000 条消息的情况)

对于 Web 服务器来说,加载所有内容、对它们进行排序、仅返回一小部分(比如 1-20)也是没有意义的,并在下一个请求时,再次加载所有排序并返回(21-40)。缓存是可能的,但是保证用户实际上会发出请求吗?

我听说有一个名为 FetchProfile 的类,它可以帮助我吗? (我想它仍然会加载所有消息,但只加载所需的信息)还有其他方法可以实现这一目标吗?

我需要一个也可以在搜索操作(使用分页搜索)中工作的解决方案,我已经构建了一个架构来创建 SearchTerm,但在这里我也需要分页。

作为引用,我在以下位置问过同样的问题: http://www.coderanch.com/t/461408/Other-JSE-JEE-APIs/java/it-possible-use-IMAP-paging

最佳答案

您需要一台带有 SORT 的服务器扩展,甚至可能不是 enough 。然后,您对特定邮箱发出 SORT 并仅 FETCH 那些属于您 View 的邮件编号。

根据评论更新:

对于 SORT 扩展不可用的服务器,下一个最好的办法是 FETCH header 字段,表示所有项目的排序键(例如。FETCH 1:* BODY[HEADER.FIELDS(SUBJECT)] 对于主题或 FETCH 1:* BODY[HEADER.FIELDS(DATA)] 对于发送日期),然后根据键进行排序。您将通过这种方式获得已排序消息编号的列表,这应该与 SORT 命令返回的内容相同。

如果允许服务器端缓存,那么最好的方法是保留信封缓存(在 IMAP ENVELOPE 意义上),然后使用 RFC 4549 中描述的技术更新它。 。有了这个缓存,排序和分页就很容易了。

Java 上有两个 IMAP API - 官方 JavaMail API 和 Risoretto 。 Risoretto 更底层,应该允许实现上述任何内容,JavaMail 也可以这样做,但我对此没有太多经验。

关于java - 是否可以使用 IMAP + 寻呼?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1387999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com