Java Mail API 1.5.5奇怪的行为

时间:2018-09-27 06:30:35

标签: javamail exchange-server outlook-2010 exchange-server-2010

我正在使用javamail (1.5.5)从交易所2010 server获取邮件。它无法获取少量消息(java.lang.OutOfMemoryError: Java heap space)。但是在使用java mail api 1.4.5且没有堆空间错误的情况下,它可以正常工作。

奇怪的是,该特殊消息的大小为136516字节。因此,在使用IMAP时,应在9批中提取(默认提取大小为16KB)。但是从下面提到的调试跟踪中,有些奇怪。

这是我的代码:

Message messObj = message[i]; String messSubject = null;
String messMsgId = null;
java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();
messObj.writeTo(bos);
bos.close();
javax.mail.util.SharedByteArrayInputStream bis = new javax.mail.util.SharedByteArrayInputStream(bos.toByteArray());
MimeMessage cmsg = new MimeMessage(session, bis);
bis.close(); mp.setMessage(cmsg);
messSubject = cmsg.getSubject();
messMsgId = ((MimeMessage) cmsg).getMessageID();
System.out.println("debugging:::subject::"+messSubject+"::msgid::"+messMsgId);

  

标志(\ Seen \ Answered))|   [14:48:21:205] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:A3893 OK FETCH   完成。| [14:48:21:205] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:A3894   FETCH 1(BODY [] <536512690.16384>)|   [14:48:21:220] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:* 1个FETCH(UID 91149   身体[] {137921} |

     

标志(\ Seen \ Answered))|   [14:48:21:236] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:A3894 OK FETCH   完成。| [14:48:21:236] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:A3895   FETCH 1(BODY [] <536650611.16384>)|   [14:48:21:251] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:* 1个FETCH(UID 91149   身体[] {137921} |

     

-5c3ef07b8737170331214bb435ce7be6-- | [14:48:21:267] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:标志(\ Seen   \已回答))| [14:48:21:267] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:A3895   OK FETCH完成。 [14:48:21:267] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:   A3896 FETCH 1(BODY [] <536788532.16384>)|   [14:48:21:283] | [09-26-2018] | [SYSOUT] | [INFO] | [73]:* 1个FETCH(UID 91149   身体[] {137921} |

     

在系统打印之前发生错误。每次获取整个消息并将其提取3896次(在发生内存堆错误并停止进程之后)。有人可以告诉我我在这里想念什么吗?

0 个答案:

没有答案