【问题标题】:How to attach a file to an email using JavaMail如何使用 JavaMail 将文件附加到电子邮件
【发布时间】:2009-11-16 20:35:50
【问题描述】:

我需要使用 JavaMail 发送 PDF 文件。 PDF 当前是一个字节[]。如何将其放入 DataSource?

byte[] pdffile = ....

messageBodyPart = new MimeBodyPart();

DataSource source = ???

messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);

multipart.addBodyPart(messageBodyPart);

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    使用javax.mail.util.ByteArrayDataSource:

    DataSource source = new ByteArrayDataSource(pdffile, "application/pdf");
    

    您可能知道,如果 PDF 在文件系统上,FileDataSource 会更容易:

    DataSource source = new FileDataSource(pdfpath);
    

    【讨论】:

    • 太棒了!由于某种原因,我没有 javax.mail.util 包,不得不下载它
    【解决方案2】:

    jheddings 的答案对我来说似乎是正确的,但我还要补充一点,如果你有机会在应用程序中使用 Spring 框架,你可以利用 Spring MimeMessageHelper,它包括一个不错的 addAttachment() 方法(并使其余的消息创建更容易)。

    【讨论】:

    • CommonsEmail (commons.apache.org/email) 也值得一试。如果您还没有使用 Spring,则必须引入几 MB 的 jars 才能获得电子邮件支持,因此 commons 可能会使事情变得更简单。
    • 好建议;我绝对不会为了这个目的而添加 Spring,但是很多人已经在使用它了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2011-05-07
    • 2020-01-14
    • 2014-06-25
    • 2010-12-07
    • 2017-08-21
    • 2012-12-14
    相关资源
    最近更新 更多