1

我正在尝试使用 java 将准备好的 pdf 文件附加到邮件中,因此我在下面尝试

String filename = "file.pdf";

 ByteArrayOutputStream bos = new ByteArrayOutputStream();
??.write(bos);

 DataSource fds = new ByteArrayDataSource(bos.toByteArray(), "application/pdf");
 MimeBodyPart mbp2 = new MimeBodyPart();            
 mbp2.setDataHandler(new DataHandler(fds));   
 mbp2.setFileName(filename); 

我不明白什么会代替'??'。所以请建议我。

4

2 回答 2

2

javax.mail.util.ByteArrayDataSourceJavaMail 1.4 中引入,以下是一些相同的指针

如果您使用 Spring 的 JavaMail API,您可以相当容易地完成这类事情(或者至少,就像 JavaMail API 允许的那样容易,这并不多)。

附件数据可以是 Spring 的任何 Resource 抽象,ByteArrayResource只是其中之一。

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

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));
   } 
});
于 2013-08-06T04:53:12.033 回答
0

请参考以下代码:

 if (arrayInputStream != null && arrayInputStream instanceof ByteArrayInputStream) {
    // create the second message part with the attachment from a OutputStrean
    MimeBodyPart attachment= new MimeBodyPart();
    ByteArrayDataSource ds = new ByteArrayDataSource(arrayInputStream, "application/pdf"); 
    attachment.setDataHandler(new DataHandler(ds));
    attachment.setFileName("Report.pdf");
    mimeMultipart.addBodyPart(attachment);
}
于 2013-08-06T04:53:10.653 回答