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

使用JAVA Mail API发送带有附件的电子邮件,无需存储在本地计算机中,java,email,Java,Email,我在我的jsp页面上有一份报告,我正在以PDF格式编写这份报告。 我想以电子邮件的形式发送带有附件的PDF文件,但我不想将文件存储在本地计算机或服务器中,但是我想发送一封带有附件的电子邮件。您必须编写自己的javax.activation.DataSource实现,从内存中读取附件数据,而不是使用其中一个实现(从文件、URL等中读取)。如果您有字节数组中的PDF报告,那么您可以实现一个数据源,该数据源返回封装在ByteArrayOutputStream中的字节数组。如果您使用,您可以相当轻松地完

我在我的
jsp
页面上有一份报告,我正在以PDF格式编写这份报告。
我想以电子邮件的形式发送带有附件的PDF文件,但我不想将文件存储在本地计算机或服务器中,但是我想发送一封带有附件的电子邮件。

您必须编写自己的
javax.activation.DataSource
实现,从内存中读取附件数据,而不是使用其中一个实现(从文件、URL等中读取)。如果您有字节数组中的PDF报告,那么您可以实现一个数据源,该数据源返回封装在ByteArrayOutputStream中的字节数组。

如果您使用,您可以相当轻松地完成这类工作(或者至少,在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的任何资源抽象,
ByteArrayResource
只是其中之一


请注意,SpringAPI的这一部分是独立的,它不需要(但确实受益于)Spring容器。

因为JavaMail 1.4-mail.jar包含javax.mail.util.ByteArrayDataSource

  • ()
  • -下载位置

关于

你能发送带有附件的电子邮件,然后删除本地文件吗?谢谢,这正是我需要的信息。