12
votes

Envoyez un e-mail avec pièce jointe à l'aide de Java Mail API sans stocker dans la machine locale

J'ai un rapport dans mon JSP page et j'écris ce rapport au format PDF. Et je veux envoyer le fichier PDF comme courrier électronique avec pièce jointe, mais je ne veux pas stocker le fichier dans la machine ou le serveur local, mais je souhaite envoyer un email avec la pièce jointe.


1 commentaires

Pourriez-vous envoyer le courrier électronique avec la pièce jointe, puis supprimer le fichier local après?


3 Réponses :


0
votes

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 (à lire à partir d'un fichier, une URL, etc. .). Si vous avez le rapport PDF dans une matrice d'octets, vous pouvez implémenter une source de données qui renvoie le tableau d'octets enveloppé dans une byTareRayOutPutStream.


0 commentaires

6
votes

Si vous utilisez API Javamail de Spring's , vous pouvez faire ce genre de chose assez facilement (ou au moins, aussi facilement que l'API Javamail permet, ce qui n'est pas beaucoup). Donc, vous pouvez é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));
   } 
});


0 commentaires

6
votes

1 commentaires

Merci, c'était précisément l'information dont j'avais besoin.