【问题标题】:JavaMail IMAP concept that related to download data and memory sizeJavaMail IMAP 概念,与下载数据和内存大小有关
【发布时间】:2015-08-31 06:09:36
【问题描述】:

我现在使用android javamail 来实现同步IMAP 消息。我有记忆和性能方面的问题。所以我想在使用 java 邮件 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。

【问题讨论】:

    标签: jakarta-mail


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2015-01-18
      • 2013-12-26
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      相关资源
      最近更新 更多