Thymeleaf开发的Web应用发邮件未用UTF-8乱码,求问题排查思路
Thymeleaf Web应用邮件发送乱码问题求助
我正在使用Thymeleaf开发一款Web应用,其中一项功能为应用内完成特定变更后,向测试用户发送通知邮件。但用户收到的邮件内容出现乱码,经确认是邮件未使用UTF-8编码导致,目前尚未定位到问题根源,希望帮忙找出遗漏的配置点。
补充说明
- 当前使用的IDE为IntelliJ
- 邮件发送相关代码如下:
import email.MailSender; MailSender sender = MailSenderProvider.getMailSender(); sender.sendMail(studentEmail,"Du har fått en ny handledare","Hej! "+name+ " <br>" + "Du har fått en ny handledare "+ " <br>"+ "logga in på: "+ "<a href='vfusocionom.hig.se'>" + "Vfusocionom.hig.se " + "</a>"+ "<br>" +"för att se extra detaljer" );
- 乱码现象如下:

排查方案
按优先级从高到低逐一核对以下配置:
1. 邮件发送客户端编码配置
确认你使用的MailSender实现是否显式指定UTF-8编码:
- 若使用Spring封装的
JavaMailSender,在配置文件中添加:
spring.mail.default-encoding=UTF-8
- 若使用自定义邮件发送实现,构造MimeMessage时必须显式设置编码:
MimeMessage message = mailSender.createMimeMessage(); // 第二个参数为true表示支持多部分内容,第三个参数强制指定UTF-8编码 MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); // 后续依次设置收件人、主题、内容即可
2. 邮件内容类型配置
如果发送的是HTML格式邮件,设置内容时需要指定完整的content type:text/html;charset=UTF-8,不可仅设置为text/html。
3. 项目全局编码配置
确认IntelliJ项目编码配置正确,避免硬编码的特殊字符在编译阶段就出现编码错误:
- 打开
File > Settings > Editor > File Encodings - 将Global Encoding、Project Encoding、properties文件默认编码全部设置为UTF-8
- 勾选
Transparent native-to-ascii conversion选项
4. Thymeleaf模板编码配置(若使用模板渲染邮件内容)
如果后续改用Thymeleaf渲染邮件模板,需要单独配置邮件模板解析器的编码:
@Bean public SpringResourceTemplateResolver emailTemplateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setPrefix("classpath:/templates/email/"); resolver.setSuffix(".html"); resolver.setTemplateMode(TemplateMode.HTML); resolver.setCharacterEncoding("UTF-8"); resolver.setCacheable(false); return resolver; }
内容的提问来源于stack exchange,提问作者Codexing
相关产品推荐
相关产品推荐

