从响应对象生成 ImapMessage
Generate ImapMessage from Response Object
我创建了一个自定义命令来检索同一请求中的多个对象(为了解决一些性能问题),而不是使用文件夹方法 .getMessage(..)
,在我的例子中检索了一个 ImapMessage
对象:
Argument args = new Argument();
args.writeString(Integer.toString(start) + ":" + Integer.toString(end));
args.writeString("BODY[]");
FetchResponse fetch;
BODY body;
MimeMessage mm;
ByteArrayInputStream is = null;
Response[] r = protocol.command("FETCH", args);
Response status = r[r.length-1];
if(status.isOK()) {
for (int i = 0; i < r.length - 1; i++) {
...
}
}
目前我正在验证对象是否是这样的 ImapResponse
:
if (r[i] instanceof IMAPResponse) {
IMAPResponse imr = (IMAPResponse)r[i];
我的问题是,如何将此回复转换为 ImapMessage
?
谢谢。
您是否尝试一次下载多条消息的完整消息内容?您是否尝试过使用 IMAPFolder.FetchProfileItem.MESSAGE?这将导致 Folder.fetch 下载整个消息内容,然后您可以使用消息对象访问这些内容。
我尚未成功将其转换为 IMAPMessage,但我现在可以将其转换为 MIME 消息。它并不完美,但我想它现在必须工作:
FetchResponse fetch = (FetchResponse) r[i];
BODY body = (BODY) fetch.getItem(0);
ByteArrayInputStream is = body.getByteArrayInputStream();
MimeMessage mm = new MimeMessage(session, is);
然后,它可以用来获取这样的信息:
String contentType = mm.getContentType();
Object contentObject = mm.getContent();
还有其他方法可以获取发件人、日期等信息
我创建了一个自定义命令来检索同一请求中的多个对象(为了解决一些性能问题),而不是使用文件夹方法 .getMessage(..)
,在我的例子中检索了一个 ImapMessage
对象:
Argument args = new Argument();
args.writeString(Integer.toString(start) + ":" + Integer.toString(end));
args.writeString("BODY[]");
FetchResponse fetch;
BODY body;
MimeMessage mm;
ByteArrayInputStream is = null;
Response[] r = protocol.command("FETCH", args);
Response status = r[r.length-1];
if(status.isOK()) {
for (int i = 0; i < r.length - 1; i++) {
...
}
}
目前我正在验证对象是否是这样的 ImapResponse
:
if (r[i] instanceof IMAPResponse) {
IMAPResponse imr = (IMAPResponse)r[i];
我的问题是,如何将此回复转换为 ImapMessage
?
谢谢。
您是否尝试一次下载多条消息的完整消息内容?您是否尝试过使用 IMAPFolder.FetchProfileItem.MESSAGE?这将导致 Folder.fetch 下载整个消息内容,然后您可以使用消息对象访问这些内容。
我尚未成功将其转换为 IMAPMessage,但我现在可以将其转换为 MIME 消息。它并不完美,但我想它现在必须工作:
FetchResponse fetch = (FetchResponse) r[i];
BODY body = (BODY) fetch.getItem(0);
ByteArrayInputStream is = body.getByteArrayInputStream();
MimeMessage mm = new MimeMessage(session, is);
然后,它可以用来获取这样的信息:
String contentType = mm.getContentType();
Object contentObject = mm.getContent();
还有其他方法可以获取发件人、日期等信息