2010-08-24 74 views
4

我使用javamail API來創建電子郵件並附加文件。javamail問題:如何在不創建文件的情況下附加文件

有沒有辦法使用javamail api 發送帶有附件的電子郵件,而無需在文件系統上物理創建文件。

我只是想從應用 挑選一些數據和我的電子郵件附加它作爲文件

我應該如何附上:

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非常一切!

回答

10

如果你使用JavaMail 1.4或更高版本可以使用java.mail.util.ByteArrayDataSource這樣

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

這是偉大的:) TY非常喜歡,我只是需要一個更詳細: 我附上名字是untitled- [2]。 如何定製它? – moa 2010-08-24 12:31:30

+0

是的!這工作得很好,ty再次:) – moa 2010-08-24 14:18:12

+2

(對於後代,@尼古拉斯意味着'setFileName'和'MimeBodyPart',而不是'getFileName'和'MimeMultipart'。) – dkarp 2011-01-11 16:11:03

相關問題