java郵件API使用流嗎?我在哪裏可以得到源代碼來確認這一點。 我也嘗試使用原始和非原始模式發送郵件。在原始模式 我可以通過一個輸入流的MimeMessage構造:[/ B]使用java郵件的內存不足
new MimeMessage(session, doc.getBodyInputStream());
在非原始模式下,我必須做以下 由於可以有任意mime類型,所以我必須使用DataHandler
和DataSource
。由於DataSource
接口合同提到每次調用getInputStream()
時都會提供新的inputStream,因此我們需要將數據保留在byte[]
之內,這將導致大型文檔或文檔導致OOM。有沒有辦法避免這種情況?
MimeMessage msg = new MimeMessage(session);
byte[] bArr = doc.getBody();
ByteArrayInputStream ins = new ByteArrayInputStream(
bArr != null && bArr.length > 0 ? bArr : "".getBytes());
msg.setDataHandler(new DataHandler(new ByteArrayDataSource(ins, mimeType)));
如果您在將附件保留在內存中時遇到問題,您認爲電子郵件網絡將如何處理它? – skaffman 2009-12-22 10:52:41