Отправка вложения javaMail из записей базы данных - PullRequest
0 голосов
/ 27 декабря 2011

В таблице базы данных у меня есть 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);

...

1 Ответ

2 голосов
/ 27 декабря 2011

Вы должны прочитать данные байтового массива (изображение) из базы данных и затем использовать http://javamail.kenai.com/nonav/javadocs/javax/mail/util/ByteArrayDataSource.html, чтобы создать источник данных для прикрепления, используя ваш байтовый массив и установив тип mime.

...