Создайте файл 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), есть ли другие, которые могут делать то же самое, но в памяти? Заранее спасибо!


person Tuco    schedule 09.05.2018    source источник


Ответы (1)


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

person jlh91    schedule 09.05.2018