java - 需要显示特定名称而不是用户名作为通过 Spring boot smtp 发送邮件的显示名称?

标签 java spring-boot jakarta-mail

 SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3c5d5e5f587c5b515d5550125f5351" rel="noreferrer noopener nofollow">[email protected]</a>");
        message.setTo(recipients);
        message.setSubject("SERVICE DOWN");
        message.setText(".............");
        mailSender.send(message);

使用此功能时,用户名显示为显示名称。我想要自定义名称,例如“SUPPORT”?

最佳答案

SimpleMailMessage 不支持该功能。你必须使用另一个类。一个好的替代方案是 MimeMessageHelper 。它使用起来非常简单,并且支持更多功能。

这是一个简单的例子

首先,需要一个 MailSender 对象。您可以创建一个或从中创建一个 bean:

JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);

mailSender.setUsername("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2cfdb8cc5cfc3cbcee2c5cfc3cbce8cc1cdcf" rel="noreferrer noopener nofollow">[email protected]</a>");
mailSender.setPassword("password");

Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");

然后发送消息:

MimeMessagePreparator mailMessage = mimeMessage -> {

    MimeMessageHelper message = new MimeMessageHelper(
            mimeMessage, true, StandardCharsets.UTF_8);
    try {
        message.setFrom(senderEmail, senderName); // Here comes your name
        
        message.addTo(recipientEmail);  

        
        message.setReplyTo(senderEmail);
        message.setSubject(subject);
        message.setText(fallbackTextContent, htmlContent);
        
    } catch (Exception e) {
        throw new MailDeliveryServiceException(recipientEmail, e);
    }
};

mailSender.send(mailMessage);

关于java - 需要显示特定名称而不是用户名作为通过 Spring boot smtp 发送邮件的显示名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70563335/

相关文章:

java - 从另一个配置附加依赖项

java - 使用java将一个文件的输出存储在另一个文件中

javascript - 从 Spring Rest api 下载文件

spring-boot - 多实例服务上的事件驱动架构

java - 使用 JavaMail API 时出现 SSLException

jakarta-mail - 消息唯一存在于java邮件中

java - Java中的 "ReentrantLock"是什么意思?

java - 用于启动 Java Spring Boot 项目的curl命令

java - 通过 -cp 而不是 -jar 运行 spring boot 应用程序 jar

java - 如何在一个线程中监听不同账户的大量IMAP文件夹?