Javamail - CSVPrinter: отправка электронной почты с прикрепленным csv - PullRequest
0 голосов
/ 02 января 2019

Я хочу отправить электронное письмо с вложением csv без необходимости сохранения файла csv на сервере.

Я создаю свой CSV:

StringWriter sw = new StringWriter();        
try {
    CSVPrinter csvPrinter = new CSVPrinter(sw, CSVFormat.DEFAULT.withHeader(
        "Année", "Mois", "Date", "Pièce", "Libellé",
        "Débit", "Crédit", "Compte", "Journal"
    ));
    for (ExportComptaAV export : exports){
        csvPrinter.printRecord(export.getAnnee().getLibelle(),
                                export.getMois().getLibelle(),
                                export.getDateMouvement().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),
                                export.getPiece(),
                                export.getLibelle(),
                                export.getMontantDebit().toString(),
                                export.getMontantCredit().toString(),
                                export.getNumCompte(),
                                export.getCodeJournal());
    }

} catch (IOException e) {
    e.printStackTrace();
}

И моя процедура электронной почты:

MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, CharEncoding.UTF_8);
    InternetAddress ad = new InternetAddress("test@gmail.com");
    message.addTo(ad);
    message.setSubject(sujet);
    message.setText(content, isHtml);
    String fileName = "csvFile.csv";
    message.addAttachment(fileName,  new ByteArrayResource(...));

    javaMailSender.send(mimeMessage);
} catch (MessagingException mex) {
    throw mex;
}

Итак, я хотел бы преобразовать мой CsvPrinter в ByteArrayresource.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 02 января 2019

Получить строку из StringWriter, получить байты из строки и использовать их с ByteArrayResource.

...