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);
    }
}
}

这里填写的内容就是看你项目所需要东西简单的文本的话就添加下面这几个就可以了

SimpleMailMessage message = new SimpleMailMessage();
        //设置主题        
        message.setSubject(“内容”);
        //设置邮件发送者
        message.setFrom(“内容”);
        //设置邮件接受者,多个接受者传参为数组格式
        message.setTo(“内容”);
        //设置邮件正文(邮件的正式内容)
        message.setText(“内容”);

因为我用的是阿里云邮箱所以在配置文件中的password填写的就是你登录邮箱所用到的密码就可以了,如果是qq邮箱的话你就需要去qq邮箱获取到这个码,填写到password当中。

 本文有借鉴别人的博客,有一些搬运了,但是我这个记录只是想我下次遇见这个问题的时候我能快速的找到,不为别的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值