J'ai un rapport dans mon JSP code> 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. P>
3 Réponses :
Vous devez écrire votre propre implémentation de javax.activation.datasource code> 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. P>
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));
}
});
Depuis JavaMail 1.4 - mail.jar - contient javax.mail.util.ByteArrayDataSource p>
Merci, c'était précisément l'information dont j'avais besoin.
Pourriez-vous envoyer le courrier électronique avec la pièce jointe, puis supprimer le fichier local après?