You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Tomcat应用中邮件正文重音字符编码问题求助

解决JavaMail发送邮件时重音字符显示为问号的问题

核心原因

你遇到的重音字符变问号,本质是JavaMail默认编码不匹配导致的:MimeMessage.setText(String text)方法默认使用系统平台的默认字符编码(大概率不是UTF-8),带重音的Unicode字符被错误编码后,最终显示为问号。

直接解决方案

1. 给setText指定UTF-8编码

把原来的setText调用改成带编码参数的重载版本:

// 替换之前的 message.setText(yourText);
message.setText(yourText, "UTF-8");

如果是HTML格式的邮件,还可以同时指定MIME类型:

message.setText(yourText, "UTF-8", "html");

2. 用setContent显式定义内容类型和编码

如果需要更明确的控制,直接用setContent方法设置MIME类型和字符集:

// 纯文本邮件
message.setContent(yourText, "text/plain; charset=UTF-8");

// HTML邮件的话改成
// message.setContent(yourText, "text/html; charset=UTF-8");

额外检查项

  • 发完邮件后可以查看邮件的原始内容,确认Content-Type头里包含charset=UTF-8,确保编码设置生效。
  • 主流邮件客户端都支持UTF-8编码,若遇到老旧客户端无法正常显示,可能需要对方调整客户端的编码设置。

内容的提问来源于stack exchange,提问作者stefano errani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:15:41