2010-08-24 75 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

相关问题