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

Need to show a specific name instead of username as display name to mail send via Spring boot smtp?

 SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("abcd@gmail.com");
        message.setTo(recipients);
        message.setSubject("SERVICE DOWN");
        message.setText(".............");
        mailSender.send(message);

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

正如您在 API docs from Spring 上看到的那样,您应该使用不同的 class: “考虑使用 JavaMailSender 和 JavaMail MimeMessages 来创建更复杂的消息,例如带有附件、特殊字符编码或伴随邮件地址的个人姓名的消息。”

SimpleMailMessage 不支持该功能。您必须使用另一个 class 才能做到。 MimeMessageHelper 是一个不错的选择。它使用起来非常简单,并且支持更多功能。

这是一个简单的例子

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

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

mailSender.setUsername("my.gmail@gmail.com");
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);