【JavaMailSender not found】项目可以正常引入,但是启动时提示JavaMailSender找不到相应的bean

本文描述了在SpringBoot项目中集成JavaMailSender时遇到的找不到bean的问题,通过检查依赖、配置文件、排除自动配置、查看日志和手动创建Bean的方式进行了排查和解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

分析

解决方案


前言

        小伙伴们大家好,最近在个人项目中引入发送邮件的功能时,遇到了问题,异常部分的代码如下,编写的时候JavaMailSender可以正常引入,配置文件中的mail信息也填好了的,但是项目启动遇到报错,报错信息如下,意思就是spring容器中找不到JavaMailSender

Description: A component required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found. Action: Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.

    @Resource
    private JavaMailSender javaMailSender;
    @Override
    public void sendMail(Email email) {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(email.getSendTo());
            mimeMessageHelper.setSubject(email.getSubject());
            mimeMessageHelper.setText(email.getContent(),true);
            javaMailSender.send(mimeMessage);

        } catch (MessagingException e) {
            log.error("send mail error , the mail subject if -> {}",email.getSubject(),e);
            throw new RuntimeException(e);
        }
    }
}

分析

        使用的是SpringBoot框架,通常不需要手动配置JavaMailSender bean,因为Spring Boot提供了自动配置功能,可以按照以下方式进行排查和解决:

一、检查依赖:确保项目pom.xml文件中包含了Spring Boot Mail的起步依赖。

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

二、确认配置信息:在application.yml配置文件中填写邮件发送所需的相关信息

    mail:
      host: smtp.qq.com
      protocol: smtp
      default-encoding: UTF-8
      username: xxx@qq.com
      password: xxxxxx

三、检查是否排除自动配置:检查配置类,确保没有排除MailSender相关的自动配置。

四、查看启动日志:启动应用程序时,查看控制台输出的日志信息,检查是否有关于JavaMailSender bean创建失败的错误信息

五、手动创建Bean:尝试手动创建JavaMailSender bean并注入

解决方案

        配置检查过后没问题,最终选择手动注入,代码如下,再次重启项目,没有报错

@Configuration注解标识这是一个配置类

@Bean注解标识该方法返回一个bean

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@Configuration
public class MailConfiguration {

    @Bean
    public JavaMailSenderImpl JavaMailSender(){
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost("smtp.qq.com");
        javaMailSender.setUsername("xxx@qq.com");
        javaMailSender.setPassword("xxxxxx");
        return javaMailSender;
    }
}

                                                                     --- end ---

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先锋 Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值