问题描述
对于 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);