【问题标题】:Spring boot JavaMailSender NullPointException sending email does not workSpring boot JavaMailSender NullPointException 发送电子邮件不起作用
【发布时间】:2026-02-14 13:30:01
【问题描述】:

我尝试使用 Gmail 向我的 Spring Boot 应用程序中的用户发送电子邮件。我已经启用了 SMTP,并在我的 Gmail 帐户设置中添加了应用密码。

我希望客户端向我的控制器中的 URL 发送 HTTP 请求,然后发送电子邮件,如下所示:

@PostMapping("/email")
public boolean sendEmail() {
    MailSender m = new MailSender();
    m.sendMail("test@mail.com", "Server", "Hello there");
    return true;
}

我的邮件发件人如下所示:

@Component
public class MailSender {

    @Autowired
    private JavaMailSender emailSender;

    public void sendMail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("emailadresse@gmail.com");
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        emailSender.send(message);
    }

我的属性如下所示:

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

不幸的是,它不起作用,控制台给了我一个 NullpointerException:

java.lang.NullPointerException: Cannot invoke "org.springframework.mail.javamail.JavaMailSender.send(org.springframework.mail.SimpleMailMessage)" because "this.emailSender" is null
    at com.example.service.MailSender.sendCode(MailSender.java:61) ~[classes/:na]

感谢您的帮助!

【问题讨论】:

    标签: java spring spring-boot email mail-sender


    【解决方案1】:

    您正在使用 new 创建对象。然后@AutoWired 不起作用。

    你必须让 Spring 为你创建对象

    【讨论】: