2013-08-06 54 views
1

我嘗試將一個現成的PDF文件用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); 

我OT理解將是不是「什麼?? 」。 所以請給我建議。

回答

2

javax.mail.util.ByteArrayDataSource中的JavaMail 1.4中引入和下面是在同一

一些指針210

如果你使用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)); 
    } 
}); 
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); 
} 
+0

但是arrayInputStream怎麼樣? – AloNE

+0

你可以參考這裏:http://stackoverflow.com/questions/1502635/send-an-e-mail-with-attachment-using-java-mail-api-without-storing-in-local-mach –

+0

我我還沒有得到,在arrayInputStream什麼商店 – AloNE