首页 > 解决方案 > intellij 显示“无法自动接线。找不到 'JavaMailSender' 类型的 bean。” 虽然代码仍然正确运行

问题描述

我正在尝试自动装配 JavaMailSender

@Autowired
private JavaMailSender javaMailSender;

我已将这些添加到 pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

这些应用程序属性:

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=xxx
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

并且项目运行正常(我成功发送了邮件)。但是 intellij 在 javaMailSender 变量上显示错误。当我将鼠标悬停在它显示的错误上时

“无法自动装配。找不到 'JavaMailSender' 类型的 bean。”

我该如何解决这个错误?

标签: spring-bootintellij-idea

解决方案


您需要为 Javamailsender 创建一个 bean。如果我的猜测是正确的,那么您的依赖项中有弹簧安全性。
你可以这样做:

@Configuration
public class MailConfiguration {

    @Bean
    public JavaMailSender getJavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.gmail.com");
        mailSender.setPort(587);

        mailSender.setUsername("my@gmail.com");
        mailSender.setPassword("mypassword");

        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        return mailSender;
    }
}

推荐阅读