2011-12-12 120 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);