Вложение контента CSV в почту - PullRequest
4 голосов
/ 12 декабря 2011

Один из моих сервлетов создает содержимое CSV в переменной String.

Я хотел бы отправить этот 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 к почте?

Спасибо

Ответы [ 2 ]

7 голосов
/ 12 декабря 2011

Вам нужно 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);
0 голосов
/ 12 декабря 2011
    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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...