如何在java中将MimeReader的内容转换为字符串?

问题描述

对于 SimpleMailMessage,您可以这样做:

SimpleMailMessage msg = new SimpleMailMessage()
msg.setFrom(..)
msg.setTo(..)
msg.setCc(..)
msg.setSubject(..)
msg.setText(..)

msg.toString()

结果是:

SimpleMailMessage: [email protected]; replyTo=null; [email protected]; ... text=Test Body;

这是一种轻松查看 SimpleMailMessage 内容的好方法,但那是当您不发送附件时。我有我使用的附件功能

MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setCc(InternetAddress.parse(cc));
helper.setSubject(subject);
helper.setText(body);
FileSystemResource file = new FileSystemResource(attachmentPath);
helper.addAttachment(fileName,file);

但是在执行 helper.toString()message.toString() 时,它只返回一个 java 类文字

有没有一种像 SimpleMailMessage 这样的字符串格式来显示 MimeMessage 内容的好方法

解决方法

我能想到的一种选择是使用 Jackson 的 ObjectMapper 将对象转换为 JSON 并打印出来,如下所示:

MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setCc(InternetAddress.parse(cc));
helper.setSubject(subject);
helper.setText(body);
FileSystemResource file = new FileSystemResource(attachmentPath);
helper.addAttachment(fileName,file);

ObjectMapper mapper = new ObjectMapper();
String helperAsJson= mapper.writeValueAsString(helper);