首页 > 解决方案 > 通过 Spring Boot_Basic 发送电子邮件。问候空指针异常

问题描述

我创建了两个类 EmailSenderService.java 和 SpringEmailDemoApplication.java,如下所示。

EmailSenderService.java

@Service
public class EmailSenderService {

    @Autowired
    private JavaMailSender mailSender;
    
    public void sendEmail(String toEmail,
                          String subject,
                          String body){
    
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("ABC@gmail.com");
        message.setTo(toEmail);
        message.setSubject(subject);
        message.setText(body);
    
        mailSender.send(message);
    
        System.out.println("Mail send via Spring Boot Successfully...");
    
    }
}

SpringEmailDemoApplication.java

@SpringBootApplication
public class SpringEmailDemoApplication {
    @Autowired
    public EmailSenderService senderService1;
    
    public static void main(String[] args) {
        SpringApplication.run(SpringEmailDemoApplication.class, args);
    }
    
    @EventListener(ApplicationReadyEvent.class)
    public void sendMail(){
        senderService1.sendEmail("XYZ@gmail.com",
                "Spring boot Email sender",
                "Hi How are you.");
    }
}

但是在调用时运行程序后出现空指针异常senderService1.sendEmail

java.lang.NullPointerException: null
    at com.sumitcodes.SpringEmailDemo.SpringEmailDemoApplication.sendMail(SpringEmailDemoApplication.java:20) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.9.jar:5.3.9]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.9.jar:5.3.9]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.9.jar:5.3.9]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.9.jar:5.3.9]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.9.jar:5.3

标签: spring-bootnullpointerexception

解决方案


我要问的第一件事是您是否配置了 JavaMailSender?

接下来,您是否尝试过在您的 IDE 调试器中运行?
从 sendMail() 方法中的 sendEmail 调用上的断点开始。然后单步执行代码,您应该更接近原因。


推荐阅读