java 邮件 API 使用流式传输吗?我在哪里可以得到源代码来确认这一点。我也尝试使用原始和非原始模式发送邮件。在原始模式下,我可以将输入流传递给 MimeMessage 构造函数:[/b]
new MimeMessage(session, doc.getBodyInputStream());
在非原始模式下,我必须执行以下操作因为可以有任何 mime 类型,所以我必须使用DataHandler
and DataSource
。由于DataSource
接口合同规定每次调用时都提供新的 inputStream getInputStream()
,因此我们需要将数据保留在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)));