Создать CSV-файл и отправить в виде вложения - PullRequest
0 голосов
/ 10 мая 2018

Итак, я пытаюсь сгенерировать CSV-файл, а затем немедленно отправить его в виде вложения.

@Async
public void sendAuditEventsReportEmail(@NonNull Locale locale,
                                       @NonNull String fileName,
                                       @NonNull String[] contacts,
                                       @NonNull List<AuditEventResponse> auditEventResponses) {
    try {

        final MimeMessageHelper message = message(true);
        message.setFrom(portalProperties.getMail().getFrom());
        message.setCc(contacts);
        message.setSubject(messageSource.getMessage("mail.act.subject", null, locale)
                           + fileName);
        writeCSVFile(fileName, auditEventResponses);
        message.addInline("customer-logo",
                          new ClassPathResource(CUSTOMER_LOGO_PATH),
                          PNG_MIME);
        this.mailSender.send(message.getMimeMessage());

    } catch (MessagingException e) {
        log.error("Could not send audit report email");
    }
}

private void writeCSVFile(String fileName, List<AuditEventResponse> auditEventResponses) {
    ICsvBeanWriter beanWriter = null;
    try {
        beanWriter = new CsvBeanWriter(new FileWriter(fileName + ".csv"),
                                       CsvPreference.STANDARD_PREFERENCE);
        String[] header = {"type", "entityType", "principal", "timestamp", "data", "date"};
        beanWriter.writeHeader(header);
        for (AuditEventResponse auditEventResponse : auditEventResponses) {
            beanWriter.write(auditEventResponse, header);
        }
    } catch (IOException e) {
        System.err.println("Error writing the CSV file: " + e);
    } finally {
        if (beanWriter != null) {
            try {
                beanWriter.close();
            } catch (IOException e) {
                System.err.println("Error closing the writer: " + e);
            }
        }
    }
}

но, как вы видите, я только создаю файл (хотел убедиться, что он был сгенерирован правильно). Есть ли способ создать файл в памяти, чтобы я мог использовать его в качестве вложения в электронное письмо? Я думаю, что библиотека, которую я использую, не поддерживает ее (supercsv), есть ли другие, которые могут делать то же самое, но в памяти? Заранее спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Если вам нужно отправить вложение, вам нужно физически создать файл, чтобы ваша программа работала хорошо. Вы просто должны удалить свой файл после отправки почты.

...