SpringBoot中JavaMailSender注入失败

第一步 引入依赖

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

第二部 在配置中心添加相关配置(application.yml /application.properties  /nacos)

spring:
  mail:
    host: smtp.qq.com
    port: 465
    username: your_username@qq.com
    password: your_password
    protocol: smtps
    properties:
      mail:
        transport:
          protocol: smtps
        smtp:
          ssl:
            enable: true

第三部 在config配置@bean实例

@Configuration
public class MailConfig {
    //bean命名
    @Bean(name = "javaMailSender")
    public JavaMailSenderImpl createMailSender() {
        //创建一个 JavaMailSenderImpl 的实例,用于发送邮件。
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        //设置邮件服务器的主机地址为 smtp.qq.com。这里假设您使用的是腾讯 QQ 邮箱服务。
        mailSender.setHost("smtp.qq.com");
        //设置邮件服务器的端口号为 465。
        mailSender.setPort(465);
        ///设置发件人的邮箱地址,即您 QQ 邮箱的地址。
        mailSender.setUsername("your_username@qq.com");
        //设置发件人的邮箱密码,即您 QQ 邮箱的登录密码。注意要妥善保护您的密码,不要将其泄露给他人。
        mailSender.setPassword("your_password");
        //创建一个名为 props 的 Properties 对象,用于保存邮件发送的相关配置信息。
        Properties props = mailSender.getJavaMailProperties();
        //将邮件的传输协议设置为 SMTPS(即带有 SSL 加密的 SMTP 协议)。
        props.put("mail.transport.protocol", "smtps");
        //表示启用 SSL 加密功能,保障邮件内容的安全。
        props.put("mail.smtp.ssl.enable", "true");
        //:将上面创建的 props 对象设置到 JavaMailSenderImpl 实例中,以便能够进行加密传输。
        mailSender.setJavaMailProperties(props);
        //返回 JavaMailSenderImpl 的实例,作为 Bean 对象。其他组件可以通过依赖注入来获取这个实例,进行邮件发送等操作。
        return mailSender;
    }
}

第四步 创建发送邮件方法 注入javaMailSender

@Service
public class MailServiceImpl implements MailService {
    @Autowired
    private JavaMailSender javaMailSender;
    

    public void sendEmail(String email,String name){
    //使用 JavaMailSender 创建一个 MIME 类型的信息对象实例。
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    try {
    //创建一个 MimeMessageHelper 对象实例,用于辅助构建 MIME 类型的信息。
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        //设置邮件接收人的邮箱地址。
        helper.setTo(接收人);
        //设置邮件发送人的地址,此处应替换成真实的发送人邮箱地址。
        helper.setFrom("发送人");
        设置邮件的主题。
        helper.setSubject("注册通知");
        获取当前的时间日期信息。
        Date date = new Date();
        //设置邮件的文本内容,其中使用了 HTML 标签来设置文本样式。具体来说,用了 <span> 标签来设置字体颜色,name 和 date 变量则是用于动态显示的内容。
        helper.setText("恭喜<span style=\"color:red;\">"+name+"</span>在"+date+"成功注册了我们团队合力所开发的软件,这个软件可以为你的日常生活带来极大的方便,它将是你的生活发生天翻地覆的变化。敬请期待它对你的改变",true);
        //发送附件
        helper.addAttachment("文件名",new File("路径"));
        //发送图片
        helper.setText("内容<br><img src='图片名'>",true);
        helper.addInline("图片名",new FileSystemResource(new File("路径")));
        //超链接
        helper.setText("内容<a href='http://www.baidu.com'>点我</a>",true);
        //调用 JavaMailSender 的 send() 方法来完成邮件发送操作,其中 mimeMessage 参数即为构建好的 MIME 类型信息对象。
        javaMailSender.send(mimeMessage);
    } catch (Exception e) {
    //:捕获可能发生的异常并抛出运行时异常,以便能够及时处理问题。
        throw new RuntimeException(e);
    }
}
}