2011-12-12 81 views
4

我的一个servlet在String变量中创建CSV内容。将CSV内容附加到邮件中

我想发送这个CSV文件,就像附件文件一样,但是大家都知道GAE的局限性:创建文件是不可能的。所以,我决定找到另一种解决方案。

煤矿是附上CSV串那样:

String csv = ""; 
Message msg = new MimeMessage(session); 
msg.setDataHandler(new DataHandler(new ByteArrayDataSource(csv.getBytes(),"text/csv"))); 
msg.setFileName("data.csv"); 

我收到邮件,但没有附件。 CSV字符串被集成到邮件的正文部分。

如何将CSV CSV文件附加到邮件中?

感谢

回答

0
javax.mail.Multipart multipart = new MimeMultipart(); 

    javax.mail.internet.MimeBodyPart messageBodyPart = new javax.mail.internet.MimeBodyPart(); 

    multipart.addBodyPart(messageBodyPart); 

    javax.activation.DataSource source = new FileDataSource("C:\\Notes\\data.csv"); 

    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName("data.csv"); 

    multipart.addBodyPart(messageBodyPart); 
    msg.setContent(multipart); 

    MimeBodyPart part = new MimeBodyPart(); 
    part.setText(text); 

    multipart.addBodyPart(part); 
+0

是GAE没有访问文件系统 –

+1

@splix App Engine应用的问题有只读访问他们的文件系统。然而,首先将数据写入文件绝对没有理由 - 这是一个巨大的混乱。 –

7

你需要MimeMultipart消息,并附上其作为MimeBodyPart的:

Message msg = new MimeMessage(session); 
MimeBodyPart attachFilePart = new MimeBodyPart(); 
attachFilePart.setDataHandler(new DataHandler(new ByteArrayDataSource(csv.getBytes(),"text/csv"))) 
attachFilePart.setFileName("data.csv"); 
msg.addBodyPart(attachFilePart);