如何发送从Java中的字符串创建的邮件附件?

问题描述 投票:0回答:1

我遇到一个大错误日志字符串的情况,将其作为邮件文本发送不是一个好主意。因此,我们需要生成文本文件并将其作为邮件附件发送。

如果有什么方法可以在内存中创建文件并将其作为附件发送,而不是创建物理文件?

以下是我的代码:

void sendEmail(String errorlog) {
    try {
        MimeMessagePreparator messagePreparator = mimeMessage -> {
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
            messageHelper.setFrom("[email protected]"); 
            messageHelper.setTo(InternetAddress.parse("[email protected]"));
            messageHelper.setSubject("error log");
            messageHelper.setText(" Please find log attachment:");

            File <somehow crate text file from parameterized string>

            messageHelper.addAttachment("log.ext",file);

        };
        javaMailSender.send(messagePreparator);

    } catch (Exception e) {
    }
}
java javamail
1个回答
0
投票

MimeMessageHelper中还有另一个addAtachment方法,可以帮助您添加附件而不创建文件。

addAttachment(String attachmentFilename, InputStreamSource inputStreamSource)

您可以使用给定的字符串轻松创建inputStream

InputStream inputStream = new ByteArrayInputStream(string.getBytes(Charset.forName("UTF-8")));

之后创建实现inputStreamSource的inputStreamResourceSource

addAttachment("log.ext",new InputStreamResource(inputStream));
© www.soinside.com 2019 - 2024. All rights reserved.