我尝试使用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);
我不知道将会是什么而不是'??'。 所以请向我推荐一下。
答案 0 :(得分:2)
javax.mail.util.ByteArrayDataSource
以及以下是同一
如果你使用Spring的JavaMail API,你可以很容易地做到这一点(或者至少,就像JavaMail API允许的那样容易,但这并不多)。
附件数据可以是Spring的资源抽象中的任何一个,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));
}
});
答案 1 :(得分: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);
}