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 のリソース抽象化のいずれかにすることができますがByteArrayResource、それらの 1 つにすぎません。

Spring API のこの部分は独立しており、Spring コンテナーを必要としない (ただし、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 に答える