Reputation: 10795
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
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
Reputation: 22847
You have ByteArrayResource:
import org.springframework.core.io.ByteArrayResource;
....
helper.addAttachment("doc", new ByteArrayResource(docDao.findNextDoc().getBytes());
Upvotes: 2