2009-10-01 8 views

Antwort

0

Sie müssen Ihre eigene Implementierung von javax.activation.DataSource schreiben, um die Anhangdaten aus einem Speicher zu lesen, anstatt eine der enthaltenen Implementierungen zu verwenden (um von einer Datei, einer URL usw. zu lesen). Wenn Sie den PDF-Bericht in einem Byte-Array haben, können Sie eine DataSource implementieren, die das in einem ByteArrayOutputStream enthaltene Byte-Array zurückgibt.

5

Wenn Sie Spring's JavaMail API verwenden, können Sie diese Art von Sache ziemlich leicht tun (oder zumindest so einfach wie die JavaMail API erlaubt, was nicht viel ist). So könnte man so etwas schreiben:

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)); 
    } 
}); 

Die Anlagendaten alle Abstraktionen Ressourcen Frühling sein kann, ByteArrayResource ist nur einer von ihnen.

Beachten Sie, dass dieser Teil der Spring-API eigenständig ist und den Spring-Container nicht benötigt (aber davon profitiert).

Verwandte Themen