2009-10-01 3 views

Répondre

0

Vous devez écrire votre propre implémentation de javax.activation.DataSource pour lire les données de pièce jointe à partir d'une mémoire au lieu d'utiliser l'une des implémentations incluses (pour lire un fichier, une URL, etc.). Si vous avez le rapport PDF dans un tableau d'octets, vous pouvez implémenter un DataSource qui retourne le tableau d'octets enveloppé dans un ByteArrayOutputStream.

5

Si vous utilisez Spring's JavaMail API, vous pouvez faire ce genre de chose assez facilement (ou du moins, aussi facilement que l'API JavaMail le permet, ce qui n'est pas beaucoup). Donc, vous pourriez écrire quelque chose comme ceci:

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

Les données de pièces jointes peuvent être l'une des abstractions ressources de printemps, ByteArrayResource est juste l'un d'eux.

Notez que cette partie de l'API Spring est indépendante, elle ne nécessite pas (mais bénéficie) du conteneur Spring.

Questions connexes