2011-12-27 39 views
0

在数据库表中,我有3个字节的数组字段,它们包含sqlType longblob(jpg,png,gif)。如何实现用javaMail作为附件发送这些文件的逻辑?我只对使用这些文件的附件感兴趣,而不是其他的邮件逻辑。我知道如何从文件发送附件,但如何从数据库中完成它?从数据库记录发送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语句来确定ByteArrayDataSource的contentType。但我想知道是否有更优雅的方式。这是我的代码:

 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); 

...

回答