java - 无法 Autowiring org.springframework.mail.javamail.JavaMailSender

标签 java spring spring-mvc

我在尝试运行我的应用程序时遇到了以下问题。已经调试了一切,但仍然没有。

IDE 正在毫无问题地找到 bean,所以我对这里发生的事情感到非常困惑。

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mailManager': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.testmail.app.service.implement.CustomMManagerService.setMailSender(org.springframework.mail.javamail.JavaMailSender); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSender] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

我的 bean 生成位于以下文件中:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.testmail.app")
public class WebConfig extends WebMvcConfigurerAdapter {
 //CODE CODE CODE

    @Bean
    public JavaMailSenderImpl mailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

        javaMailSender.setProtocol("SMTP");
        javaMailSender.setHost("127.0.0.1");
        javaMailSender.setPort(25);

        return javaMailSender;
    }

// CODE CODE CODE
}

CustomMManager 的代码:

public interface CustomMManager extends Serializable {
    void sendMail(String mailFrom,String mailTo,String subject,String mailBody);
}

最后是 CustomMManagerService 的代码:

@Service("mailManager")
public class CustomMManagerService implements CustomMManager {
    private JavaMailSender mailSender;

    @Autowired
    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    @Override
    public void sendMail(final String mailFrom, final String mailTo, final String subject, final String mailBody) {
        try {
            mailSender.send(new MimeMessagePreparator() {
                public void prepare(MimeMessage mimeMessage)
                        throws Exception {
                    MimeMessageHelper message = new MimeMessageHelper(mimeMessage,
                            false, "UTF-8");
                    message.setFrom(mailFrom);
                    message.addTo(mailTo);
                    message.setSubject(subject);
                    message.setText(mailBody, true);
                }
            });
        } catch (MailSendException e) {
            // your codes;
        }
    }
}

非常感谢您的帮助。

最佳答案

您可能忘记设置以下属性:

spring.mail.host
spring.mail.username
spring.mail.password
spring.mail.port

关于java - 无法 Autowiring org.springframework.mail.javamail.JavaMailSender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246912/

相关文章:

java - (Spring MVC + Hibernate 4 + 测试 4) Autowiring DAO 返回 NULL

Spring Security - 基本 HTTP 身份验证 - 更改服务器消息

java - Spring Boot 和 Thymeleaf 中的 Action 监听器

spring - 在JSP中使用spring bean

java - 如何在 spring 中触发 Async TransactionalEventListener

java - hibernate 更新不起作用

java - 如何使用 Jasper 报告动态删除图表中的图例?

java - 插入到1 :m relation java spring

java - BigDecimal 等于 <= 和 >= 最佳实践

java - base64 到十六进制不一致的结果