SpringBoot发送QQ邮箱

发布于:2024-06-25 ⋅ 阅读:(46) ⋅ 点赞:(0)

1. 准备QQ邮箱的授权码

在这里插入图片描述
在这里插入图片描述

2. 引入依赖

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

3. 添加yml配置

spring:
  mail:
    host: smtp.qq.com
    username: 邮件的发送方邮箱
    password: 授权码
    default-encoding: UTF-8
    protocol: smtp
    port: 465
    properties:
      mail:
        smtp:
          auth: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            port: 465
          ssl:
            enable: true
          starttls:
            enable: true
            required: true

4. 发送邮箱需要用到的实体类

@Data
public class Mail implements Serializable {
    private static final long serialVersionUID = 4359709211352400087L;
    private String recipient;//邮件接收人
    private String subject; //邮件主题
    private String content; //邮件内容
}

5. 工具类

@Component
@Slf4j
public class MailUtil {

    private static String sender; //邮件发送者

    private static JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    public void setSender(String sender) {
        MailUtil.sender = sender;
    }

    @Resource
    public void setJavaMailSender(JavaMailSender javaMailSender) {
        MailUtil.javaMailSender = javaMailSender;
    }

    /**
     * 发送文本邮件
     *
     * @param mail
     */
    public static void sendSimpleMail(Mail mail) {
        try {
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            mailMessage.setFrom(sender); //邮件发送者
            mailMessage.setTo(mail.getRecipient()); // 邮件发给的人
            mailMessage.setSubject(mail.getSubject());  // 邮件主题
            mailMessage.setText(mail.getContent());  // 邮件内容
            javaMailSender.send(mailMessage);
            log.info("邮件发送成功 收件人:{}", mail.getRecipient());
        } catch (Exception e) {
            log.error("邮件发送失败 {}", e.getMessage());
            throw new BusinessException(ResultCodeEnum.EMAIL_FORMAT_ERROR); //这是我自定义的一个异常码
        }
    }

}

6. 测试

@Test
public void testSendMail(){
   Mail mail = new Mail();
   String code = "1234";
   // 接受人
   mail.setRecipient("205564122@qq.com");
   mail.setSubject("找回密码");
   mail.setContent(String.format("""
           你的邮箱验证码为%s,不要把验证码告诉别人哟~
           """,code));
   MailUtil.sendSimpleMail(mail);
}

网站公告

今日签到

点亮在社区的每一天
去签到