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

无法设置自定义发件人显示名求助(JDK17+Spring Boot3.1.10)

解决JDK17+Spring Boot3.1.10中邮件发件人显示名不生效的问题

问题根源

你当前使用mimeMessage.setSender(addressFrom)设置的是SMTP信封发件人,这个字段仅用于邮件传输路由,并非邮件客户端显示的发件人信息。包括Gmail在内的多数邮件客户端,会优先读取From邮件头的内容来展示发件人显示名,而非Sender字段。

修复步骤

1. 替换setSender为setFrom

将代码中的:

mimeMessage.setSender(addressFrom);

替换为:

mimeMessage.setFrom(addressFrom);

若需支持多头发件人,也可使用:

mimeMessage.addFrom(new Address[]{addressFrom});

2. 显式指定字符编码

为避免显示名因编码解析异常失效,建议创建InternetAddress时显式指定UTF-8编码:

InternetAddress addressFrom = new InternetAddress(from, displayNameFrom, "UTF-8");

3. 修正未定义变量问题

代码中if(email.getReplyTo() != null)的email变量未定义,会导致编译错误,建议注释该段代码或替换为实际业务变量。

4. 优化Gmail SMTP配置(可选)

端口465为SSL专属端口,无需启用starttls.enable,移除该配置项避免冲突:

// 移除该行配置
// props.put("mail.smtp.starttls.enable", "true");

修复后的核心代码片段

try{
    Session session = Session.getDefaultInstance(props,
            new jakarta.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(from, password);
                }
            });

    session.setDebug(true);
    Transport transport = session.getTransport();
    // 显式指定UTF-8编码创建带显示名的发件人地址
    InternetAddress addressFrom = new InternetAddress(from, displayNameFrom, "UTF-8");

    MimeMessage mimeMessage = new MimeMessage(session);
    // 设置邮件头的发件人信息,供客户端显示
    mimeMessage.setFrom(addressFrom);
    mimeMessage.setSubject(subject);
    mimeMessage.setContent(message+ "\r\n", "text/plain");
    // 注释或修正replyTo相关代码
    // if(/* 替换为实际业务变量 */ != null){
    //     mimeMessage.setReplyTo(new Address[]{new InternetAddress(/* 实际地址 */)});
    // }

    mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(recipientAddress));
    transport.connect();
    Transport.send(mimeMessage);
    transport.close();
} catch(Exception e){
    System.err.println(e);
}

验证说明

修改后重新发送邮件,邮件客户端会读取From头中的显示名与邮箱地址,正常展示为「Admin Display Name admin.emailaddress@gmail.com」格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:26:21