Download 使用java在一次调用中读取头和体

Download 使用java在一次调用中读取头和体,download,jakarta-mail,Download,Jakarta Mail,我有一个邮件阅读器类,它设置FetchProfile,然后执行msg.getContent。 我想在一次通话中阅读邮件的标题和内容,基本上在一次通话中下载完整的邮件。因为我观察到msg.getcontent调用服务器获取正文/内容,如果我们可以在一次调用中下载完整邮件,则可以保存对服务器的调用 这可能吗 代码与此类似 inbox.open(Folder.READ_ONLY); /* Get the messages which is unread in the Inbo

我有一个邮件阅读器类,它设置FetchProfile,然后执行msg.getContent。 我想在一次通话中阅读邮件的标题和内容,基本上在一次通话中下载完整的邮件。因为我观察到msg.getcontent调用服务器获取正文/内容,如果我们可以在一次调用中下载完整邮件,则可以保存对服务器的调用

这可能吗

代码与此类似

        inbox.open(Folder.READ_ONLY);

    /* Get the messages which is unread in the Inbox */
    Message messages[] = inbox.search(new FlagTerm(
            new Flags(Flag.SEEN), false));

    /* Use a suitable FetchProfile */
    FetchProfile fp = new FetchProfile();
    fp.add(FetchProfile.Item.ENVELOPE);
    fp.add(FetchProfile.Item.CONTENT_INFO);
    inbox.fetch(messages, fp);

    for (int i = 0; i < messages.length; i++) {
        System.out.println("MESSAGE #" + (i + 1) + ":");
        Message message = messages[i];

        **String content = message.getContent();**
        System.out.println("Content : " + content);
    }
收件箱。打开(文件夹。只读);
/*获取收件箱中未读的邮件*/
messages[]=收件箱。搜索(新标记词(
新标志(Flag.SEEN,false));
/*使用合适的配置文件*/
FetchProfile fp=新的FetchProfile();
fp.add(FetchProfile.Item.信封);
fp.add(FetchProfile.Item.CONTENT\u INFO);
inbox.fetch(消息,fp);
for(int i=0;i
谢谢你的帮助

谢谢和问候
Raaghu.K

如果您希望在一次呼叫中获得整个消息,并且不需要使用IMAP协议的任何功能,您有两种选择:

  • 使用POP3而不是IMAP
  • 使用Message.writeTo方法将消息内容写入文件或字节数组,并从中进行处理,例如,使用接受InputStream的MIMessage构造函数。(这将生成整个消息的本地副本。)

  • 对这个方法是可行的,但是实现起来没有什么危险,因为它可以下载完整的邮件(也可以是附件),并且可能会导致内存不足。是的,但这正是你所要求的,“一次调用下载完整的邮件”。无法在一次调用中下载消息头和消息主体,因为在检查消息结构之前,您不知道消息主体在哪里。对。你的方法和建议回答了我的问题,我刚刚解释了危险/退缩