В таблице базы данных у меня есть 3-байтовые поля массива, которые содержат sqlType longblob (jpg, png, gif).Как реализовать логику для отправки этих файлов с javaMail в качестве вложений?Меня интересует только создание вложений с этими файлами, а не остальная часть почтовой логики.Я понимаю, как отправлять вложения из файлов, но как это сделать из базы данных?
...
byte [] picture1
byte [] picture2
byte [] picture3
...
static mapping = {
picture1 column:"picture1", sqlType: "longblob"
picture2 column:"picture2", sqlType: "longblob"
picture3 column:"picture3", sqlType: "longblob"
}
...
РЕДАКТИРОВАТЬ: я пытался передать файл изображения в мой метод sendMail.В частности, я передал его в ByteArrayDataSource.Когда есть способ заставить это работать для более чем одного формата, или мне нужно сделать «взлом»?Я думаю, я мог бы сделать дополнительное поле в базе данных, где я бы сохранить расширение файла, и когда я хочу получить изображение из базы данных для отправки его во вложении, я передам его в мой метод sendMail, сопровождаемый расширением.И в методе sendMail у меня был бы оператор switch, который будет определять contentType для ByteArrayDataSource.Но мне интересно, есть ли более элегантный способ.Это мой код:
MimeBodyPart messagePart = new MimeBodyPart();
messagePart.setText(msgText);
MimeBodyPart attachmentPart = new MimeBodyPart();
ByteArrayDataSource attPic1 = new ByteArrayDataSource(p1, "image/jpeg");
attachmentPart.setDataHandler(new DataHandler(attPic1));
attachmentPart.setFileName(attPic1.getName());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messagePart);
multipart.addBodyPart(attachmentPart);
...