在java中使用SimpleMailMessage发送时,显示发件人的地址而不是他的名字

时间:2015-10-05 05:11:03

标签: java spring email

我使用org.springframework.mail包中的SimpleMailMessage发送邮件。但是接收方显示发件人的地址。我想设置他的名字。将使用哪种方法?SimpleMailMessage Class中是否有可用的方法?我正在使用带休眠的春天。

 public void sendmail(){
 String emailSubject = "Test Message";                                          
 String emailBody = "For testing";
 SimpleMailMessage simpleMailMessage = new SimpleMailMessage();     
 simpleMailMessage.setTo("sendermailid@gmail.com");
 simpleMailMessage.setCc("receivermailid@gmail.com");
 simpleMailMessage.setSubject(emailSubject);
 simpleMailMessage.setText(emailBody);
 mailSender.send(simpleMailMessage);
 }

2 个答案:

答案 0 :(得分:4)

使用Spring的MimeMessageHelper设置发件人姓名地址。

        MimeMessagePreparator mailMessage = mimeMessage -> {
            MimeMessageHelper message = new MimeMessageHelper(
                    mimeMessage, true, "UTF-8");

            message.setFrom(senderEmail, senderName);
            [...]
        };
        mailSender.send(mailMessage);

另请参阅我的代码段in this answer

答案 1 :(得分:0)

我遇到了不显示发件人姓名的问题。 我在 spring application.properties 文件中的属性是

sender.email.address=Some Name <noreply@somedomain.com>.

我检查了许多选项,除了简单的连字符 (-) 包含之外,没有一个有效。我刚刚在电子邮件地址中添加了一个连字符,如下所示,它开始工作了

sender.email.address=Some Name <no-reply@somedomain.com>.

如果您有更好的解决方法,请告诉我您的建议,我已准备好学习。