我遇到一个大错误日志字符串的情况,将其作为邮件文本发送不是一个好主意。因此,我们需要生成文本文件并将其作为邮件附件发送。
如果有什么方法可以在内存中创建文件并将其作为附件发送,而不是创建物理文件?
以下是我的代码:
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) {
}
}
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));