API Java использует потоковую передачу? Где я могу получить исходный код, чтобы подтвердить это.
Также я пытаюсь отправить письмо, используя сырой и не сырой режим.
в необработанном режиме я могу передать входной поток в конструктор MimeMessage: [/ b]
new MimeMessage(session, doc.getBodyInputStream());
В режиме Non-raw я должен сделать следующее
Так как может быть любой тип пантомимы, поэтому я должен использовать DataHandler
и 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)));