Spring/Java Mail:The sender is always the spring.mail.username. The FROM address is being ignored

Viewed 1444

I send mail using SimpleMailMessage. Everything is working nicely. But I don't know why on the receiver side shows spring.mail.username's address and not the From Adress. Each mail sent to the right address but from the address mail which is created in property spring.mail.username What method will use for this? Is there any method available in SimpleMailMessage Class?

resources/application.properties

spring.mail.host = smtp.gmail.com
spring.mail.port=587
spring.mail.username = ***@otherdomain
spring.mail.password = ***
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.starttls.enable=true 

Code

private JavaMailSender javaMailSender;

public EmailService(JavaMailSender javaMailSender) {
    this.javaMailSender = javaMailSender;
}

public void sendMail(String fromEmail,String toEmail, String subject, String message) {

    var mailMessage = new SimpleMailMessage();
    mailMessage.setFrom(fromEmail);

    mailMessage.setTo(toEmail);
    mailMessage.setSubject(subject);
    mailMessage.setText(message);


    javaMailSender.send(mailMessage);
}
1 Answers

It's not possible to change FROM EMAIL address since it's hard coded: spring.mail.username = ***@otherdomain in resources/application.properties.

But you set the name using MimeMessagePreparator

try {
   MimeMessagePreparator preparator = (mimeMessage) -> {
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setFrom(new InternetAddress("no-reply@gmail.com", "JACK SPARROW"));
        helper.setTo("example@gmail.com");
        helper.setSubject("Sample email");
        helper.setText("Message from ....", true);
    };          
    javaMailSender.send(preparator);
  } catch (MailException exception) {
    throw exception;
}
Related