使用JAVA Mail API发送带附件的电子邮件,而不在本地计算机中存储

12 java email

我在我的jsp页面中有报告,我正在以PDF格式编写该报告.我想将PDF作为带有附件的电子邮件发送,但我不希望将文件存储在本地计算机或服务器中,但我想发送带附件的电子邮件.

ska*_*man 6

如果你使用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容器.


jar*_*bjo 0

您必须编写自己的实现来javax.activation.DataSource从内存中读取附件数据,而不是使用其中包含的实现之一(从文件、URL 等中读取)。如果 PDF 报告位于字节数组中,则可以实现一个 DataSource,它返回包装在 ByteArrayOutputStream 中的字节数组。