2009-11-16 8 views
4

Je dois envoyer un fichier PDF en utilisant JavaMail. Le PDF est actuellement un octet []. Comment l'obtenir dans DataSource?Comment joindre un fichier à un courrier électronique en utilisant JavaMail

byte[] pdffile = .... 

messageBodyPart = new MimeBodyPart(); 

DataSource source = ??? 

messageBodyPart.setDataHandler(new DataHandler(source)); 
messageBodyPart.setFileName(filename); 

multipart.addBodyPart(messageBodyPart); 

Répondre

7

Utilisation javax.mail.util.ByteArrayDataSource:

DataSource source = new ByteArrayDataSource(pdffile, "application/pdf"); 

Comme vous le savez probablement, si le PDF est sur le système de fichiers, il serait plus facile aux FileDataSource:

DataSource source = new FileDataSource(pdfpath); 
+0

Excellent! Pour une raison quelconque, je n'ai pas eu le paquet javax.mail.util, a dû le télécharger – Tommy

3

jheddings réponse semble correct moi, mais j'ajouterai aussi que si, par hasard, vous utilisez Spring framework dans votre application, vous pourriez profiter de la Spring MimeMessageHelper, qui comprend un méthode ice addAttachment() (et facilite également le reste de la création du message).

+4

CommonsEmail (http://commons.apache.org/email/) vaut également un coup de feu. Si vous n'utilisez pas déjà Spring, vous devrez apporter quelques millions de bocaux juste pour obtenir l'assistance par e-mail. Les communs peuvent donc simplifier les choses. –

+0

Bonne suggestion; Je ne voudrais certainement pas ajouter le printemps juste à cet effet, mais beaucoup de gens l'utilisent déjà. –