使用JAVA Mail API发送带附件的电子邮件,而不在本地计算机中存储
我在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)); } });
附件数据可以是Spring的Resource抽象中的任何一个, ByteArrayResource
只是其中之一。
请注意,Spring API的这一部分独立存在,它不需要(但确实受益于)Spring容器。
由于JavaMail 1.4 – mail.jar – 包含javax.mail.util.ByteArrayDataSource
- https://javamail.java.net/nonav/docs/api/javax/mail/util/ByteArrayDataSource.html
- ( https://javamail.java.net/nonav/docs/api/ )
- http://www.oracle.com/technetwork/java/javamail/index-138643.html – 下载位置
问候
您必须编写自己的javax.activation.DataSource
实现来从内存中读取附件数据,而不是使用其中一个包含的实现(从文件,URL等读取)。 如果您在字节数组中有PDF报告,则可以实现一个DataSource,它返回包含在ByteArrayOutputStream中的字节数组。