Bob
Bob

Reputation: 10795

Spring email add attachment

I am using Spring 3.2 and want to send an email with attachment. I have an array of bytes - how can I set it as an attachment? I am doing like this:

bytes[] doc = docDao.findNextDoc().getBytes();
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    helper.addAttachment("doc", ???); // how can I set bytes here?
}
.... 
// other things

Upvotes: 5

Views: 5891

Answers (2)

Markus Malkusch
Markus Malkusch

Reputation: 7868

You can use addAttachment() with a DataSource or an InputStreamSource. Both interfaces offer Byte array implementations (e.g. ByteArrayDataSource or ByteArrayResource).

helper.addAttachment("doc", new ByteArrayResource(doc));

You also might reconsider polluting your memory with that byte array. Your DAO might support streams and so does addAttachment().

Upvotes: 11

Cjxcz Odjcayrwl
Cjxcz Odjcayrwl

Reputation: 22847

You have ByteArrayResource:

import org.springframework.core.io.ByteArrayResource;
....
helper.addAttachment("doc", new ByteArrayResource(docDao.findNextDoc().getBytes());

Upvotes: 2

Related Questions