【问题标题】:How to make java string colored when sending mail using SimpleMailMessage class使用 SimpleMailMessage 类发送邮件时如何使 java 字符串着色
【发布时间】:2026-01-07 04:45:02
【问题描述】:

我正在使用 java 中的 SimpleMailMessage 类发送邮件。我正在使用带有 hibernate 的 spring。我想在发送邮件时将特定字符串设置为彩色。

代码:

    String emailBody = "Dear "+username;
    SimpleMailMessage simpleMailMessage = new SimpleMailMessage();  
    simpleMailMessage.setFrom("My Name <myemail>");
    simpleMailMessage.setTo(mailid);
    simpleMailMessage.setSubject(emailSubject);
    simpleMailMessage.setText(emailBody);       
    mailSender.send(simpleMailMessage);

我想在发送邮件时将用户名设置为蓝色。我搜索了很多,但只看到了mimemessage的方法ie,mimemessage.setContent(someHtmlMessage, "text/html; charset=utf-8"); simplemailmessage没有setcontent()方法,有什么方法可以设置颜色吗?

【问题讨论】:

  • 要使用颜色和字体,您需要将电子邮件作为 HTML 电子邮件发送,然后使用 HTML 标记和样式标记使电子邮件按您的意愿显示。当涉及到样式等时,可以将电子邮件视为一个迷你网站。我不确定这可以通过 SimpleMailMessage 完成。我建议使用 Message 并使用 Transport 来发送消息。
  • 我还将html标签应用到我的代码中。即,String emailBody = "

    Dear

    "+username;它会在邮件正文中产生

    Dear

  • SimpleMailMessage 类,这是来自 Spring 库吗?如果是这样,他们的文档中有指导方针,可以发送更复杂的电子邮件以使用不同的类。看起来 SimpleMailMessage 是纯文本的,不能用于发送 HTML 电子邮件。 docs.spring.io/spring/docs/current/javadoc-api/org/…
  • link 的可能副本,并使用样式和 html 元素添加颜色。

标签: java spring email


【解决方案1】:

Spring 4.2.1 documentation 声明,如果你想要颜色,你应该使用 MimeMessage 而不是 SimpleMailMessage。这是我在代码中的操作方式:

        MimeMessagePreparator mailMessage = mimeMessage -> {

            MimeMessageHelper message = new MimeMessageHelper(
                    mimeMessage, true, ENCODING);
            try {
                message.setFrom(senderEmail, senderName);
                for (String addr : recipientEmails) {
                    message.addTo(addr);
                }
                message.setReplyTo(senderEmail);
                message.setSubject(subject);
                message.setText(fallbackTextContent, htmlContent);
            } catch (Exception e) {
                throw new MailDeliveryServiceException(recpStr, e);
            }
        };
        mailSender.send(mailMessage);

正如上面丹尼尔所说的htmlContent基本上是一个没有相关链接的小网页。 fallbackTextContent 是不支持 HTML 的邮件客户端的纯文本。

【讨论】: