提问者:小点点

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


我现在使用android javamail实现同步IMAP消息。我的记忆力和表现都很好。因此,我希望在使用java mail api时对此有更清晰的概念。

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

IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX")

>

  • 我想知道消息消息[]=inbox.get消息();这只是创建站内信计数数组吗?
  • 我看到POP3有一些解释。POP3需要下载所有消息。所以为了有效下载,应用程序可以使用FetchProfile添加要下载的信息的哪一部分。IMAPMessage、getFrom()、getsubject()中也是如此吗??例如:

    <代码>IMAPMessage消息=(IMAPMessage)消息[i]

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

    Logi(TAG,"主题:"msg.get主题());

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

    使用字符串搜索时,搜索并重写match()以查找。它循环遍历每条消息以查找匹配的消息数组。

    Message[]消息=收件箱。搜索(新SearchTerm(){xxxx})

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


  • 共1个答案

    匿名用户

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