我在我的jsp页面中有报告,我正在以PDF格式编写该报告.我想将PDF作为带有附件的电子邮件发送,但我不希望将文件存储在本地计算机或服务器中,但我想发送带附件的电子邮件.
如果你使用Spring的JavaMail API,你可以相当容易地做到这一点(或者至少,就像JavaMail API允许的那样容易,这并不多).所以你可以这样写:
JavaMailSenderImpl mailSender = ... instantiate and configure JavaMailSenderImpl here
final byte[] data = .... this holds my PDF data
mailSender.send(new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws Exception {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
// set from, to, subject using helper
helper.addAttachment("my.pdf", new ByteArrayResource(data));
}
});
Run Code Online (Sandbox Code Playgroud)
附件数据可以是Spring的Resource抽象中的任何ByteArrayResource一个,只是其中之一.
请注意,Spring API的这一部分独立存在,它不需要(但确实受益于)Spring容器.
小智 6
从JavaMail 1.4开始 - mail.jar - 包含javax.mail.util.ByteArrayDataSource
问候
您必须编写自己的实现来javax.activation.DataSource从内存中读取附件数据,而不是使用其中包含的实现之一(从文件、URL 等中读取)。如果 PDF 报告位于字节数组中,则可以实现一个 DataSource,它返回包装在 ByteArrayOutputStream 中的字节数组。