Создать CSV-файл и отправить в виде вложения

Поэтому я пытаюсь создать 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 ответ

Решение

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

Другие вопросы по тегам