2010-08-24 8 views
4

J'utilise javamail API pour créer un e-mail et y attacher un fichier.Problème javamail: comment joindre un fichier sans créer de fichier

Existe-t-il un moyen d'envoyer des e-mails avec attachement en utilisant javamail api sans créer physiquement de fichier sur le système de fichiers.

Je veux juste récupérer des données à partir de l'application et le joindre comme fichier dans mon e-mail

Comment dois-je joindre:

try { 
      // create a message 
      MimeMessage msg = new MimeMessage(session); 
      msg.setFrom(new InternetAddress(from)); 
      InternetAddress[] address = {new InternetAddress(to)}; 
      msg.setRecipients(Message.RecipientType.TO, address); 
      msg.setSubject(subject); 

      // create and fill the first message part 
      MimeBodyPart mbp1 = new MimeBodyPart(); 
      mbp1.setText(msgText1); 

      // create the second message part 
      MimeBodyPart mbp2 = new MimeBodyPart(); 

      // attach the file to the message 
      **mbp2.attachFile(filename);** 


      // create the Multipart and add its parts to it 
      Multipart mp = new MimeMultipart(); 
      mp.addBodyPart(mbp1); 
      mp.addBodyPart(mbp2); 

      // add the Multipart to the message 
      msg.setContent(mp); 

      // set the Date: header 
      msg.setSentDate(new Date()); 

      // send the message 
      Transport.send(msg); 

TY très bien tous!

Répondre

10

Si vous utilisez JavaMail 1.4 ou supérieur, vous pouvez utiliser java.mail.util.ByteArrayDataSource comme celui-ci

MimeBodyPart mbp = new MimeBodyPart(); 
String data = "any ASCII data"; 
DataSource ds = new ByteArrayDataSource(data, "application/x-any"); 
mbp.setDataHandler(new DataHandler(ds)); 
+0

qui est génial :) TY très bien j'ai juste besoin d'un détail: mon nom est untitled- joindre [2]. Comment customiser-je? – moa

+0

oui! ça marche très bien, ty encore :) – moa

+2

(Pour la postérité, @Nikolaus signifiait 'setFileName' et' MimeBodyPart', pas 'getFileName' et' MimeMultipart'.) – dkarp