将CSV内容附加到邮件中

use*_*112 5 java csv email google-app-engine

我的一个servlet在String变量中创建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");
Run Code Online (Sandbox Code Playgroud)

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

如何将CSV文件中的CSV字符串附加到邮件中?

谢谢

Igo*_*nov 8

您需要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);
Run Code Online (Sandbox Code Playgroud)


Del*_*lta 1

    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);
Run Code Online (Sandbox Code Playgroud)