与下载数据和内存大小相关的JavaMail IMAP概念

时间:2015-06-15 16:34:28

标签: javamail

我现在使用android javamail来实现同步IMAP消息。我有记忆和表现。所以我想在使用java mail api时得到更明确的概念。

从商店获取收件箱文件夹时,我将其转换为IMAP文件夹。我不需要使用pop3(完全忽略pop3)。

IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX")
  1. 我想知道消息消息[] = inbox.getMessages(); 这只是创建收件箱邮件计数数组吗?
  2. 我看到POP3有一些解释。 POP3需要下载所有邮件。因此,为了有效下载,应用程序可以使用FetchProfile添加要下载的信息部分。 这在IMAPMessage中是一样的,getFrom(),getSubject()?? 例如:

    IMAPMessage msg = (IMAPMessage) messages[i];

    Log.i(TAG, "UID": + inbox.getUID(msg));

    Log.i(TAG, "SUBJECT:" + msg.getSubject());

    在我的示例代码中,我没有使用FetchProfile,我只是使用消息数组来获取我想要的信息?但我想知道它如何在javamail库中处理?

  3. 使用字符串术语搜索进行搜索并覆盖要查找的match()。它循环遍历每条消息以查找匹配消息数组。

    Message [] message = inbox.search(new SearchTerm(){xxxx})

    是否所有IMAP消息都是从服务器下载的? 如果我们需要执行多个搜索项,那么下载的消息是否会缓存以供下次搜索? 如何做更有效的搜索?例如,如果需要搜索messageId。

1 个答案:

答案 0 :(得分:0)

  1. 是的,它会创建Message对象来表示文件夹中的每条消息。
  2. 将Folder.fetch与FetchProfile一起使用将使其预取所请求的数据并将其存储在相应的Message对象中。如果没有预取,则会按需提取数据,一次一条消息。
  3. 内置搜索词被翻译为IMAP搜索命令,这些命令在服务器上执行。如果您创建自己的搜索词,例如,通过继承现有搜索词,则需要将邮件数据下载到客户端以在那里执行搜索。已经有standard Message-ID search term