【问题标题】:Sending javaMail attachement from database records从数据库记录发送java邮件附件
【发布时间】:2011-12-27 10:24:27
【问题描述】:

在数据库表中,我有 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 语句来确定 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);

...

【问题讨论】:

    标签: java mysql grails jakarta-mail email-attachments


    【解决方案1】:

    您应该从数据库中读取一个字节数组数据(图片),然后使用http://javamail.kenai.com/nonav/javadocs/javax/mail/util/ByteArrayDataSource.html 使用您的字节数组和设置 MIME 类型来创建附加数据源。

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 2013-04-13
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2013-01-25
      相关资源
      最近更新 更多