使用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
- ()
- -下载位置
关于你能发送带有附件的电子邮件,然后删除本地文件吗?谢谢,这正是我需要的信息。