首页 > 其他分享 >SpringBoot整合QQ邮箱发送

SpringBoot整合QQ邮箱发送

时间:2022-10-08 21:58:56浏览次数:73  
标签:QQ SpringBoot 发送 mail 邮箱 message com 邮件

邮件发送的基本过程与概念

  • 邮件服务器:类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中
  • 电子邮箱:用户在邮件服务器上申请的一个账户

邮件传输协议

  • SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则
  • POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信 规则
  • IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则

获取 QQ邮箱 授权码

  • 登录QQ邮箱:https://mail.qq.com/
  • 点击设置,点击账户
  • 开启服务获取授权码:POP3/SMTP服务,注:开启服务需要手机发短信,会自动生成一个授权码,复制授权码到一个文本文件或其他地方,注授权码只会出现一次,重新获取需重新发短信

code

  • 添加依赖
<!--发送邮件-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  • 配置文件
spring:
  #配置邮箱
  mail:
    host: smtp.qq.com #发送邮件服务器
    username: [email protected] #发送邮件的邮箱地址
    password: xxx #客户端授权码
    from: [email protected] # 发送邮件的地址,和上面username一致
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
    properties.mail.smtp.ssl.enable: true
    default-encoding: utf-8
  • service层封装
@Service
@Slf4j
public class MailServiceImpl implements MailService {
    /**
     * Spring Boot 提供了一个发送邮件的简单抽象,直接注入即可使用
     */
    @Autowired
    private JavaMailSender mailSender;
    /**
     * 配置文件中的发送邮箱
     */
    @Value("${spring.mail.from}")
    private String from;

    /**
     * 发送邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendMail(String to, String subject, String content) {
        //创建一个邮箱消息对象
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件发送人
        message.setFrom(from);
        //邮件接收人
        message.setTo(to);
        //邮件主题
        message.setSubject(subject);
        //邮件内容
        message.setText(content);
        //发送邮件
        mailSender.send(message);
        log.info("邮件发成功:{}",message.toString());
    }
}
  • 单元测试
@SpringBootTest(classes = UserApplication.class)
@RunWith(SpringRunner.class)
@Slf4j
public class MailTest {
    @Autowired
    private MailService mailService;

    @Test
    public void testSendMail() {
        mailService.sendMail("[email protected]","测试主题","测试内容:O(∩_∩)O哈哈~");
    }
}
  • 验证
    • 控制台验证
    • 邮箱验证

标签:QQ,SpringBoot,发送,mail,邮箱,message,com,邮件
From: https://www.cnblogs.com/xiaoyangabc/p/16770355.html

相关文章

  • Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException--spr
    org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'indexController':Unsatisfieddependencyexpressedthroughfie......
  • springboot项目编译时,使用自定义注解类找不到符号
    springboot项目编译时,使用自定义注解类找不到符号Java项目编译时,使用自定义注解类找不到符号Spring-boot项目编辑器:idea问题:编译时找不到符号。项目中用到了自定义注解类......
  • 解决springboot 多表查询分页查询问题
    问题:springboot页面显示的数据来自三张不同的表,同时还要分页,不知道怎么查。解决过程:1、pom.xml文件中注入分页依赖2、application.yml添加分页配置3、自定义分页的......
  • springboot+热部署
    springboot框架已经用了很长时间了,每次调整代码都需要重启项目,很多时候就算是重启了,项目的一些资源还不能更新这就需要一个东西叫做热部署,顾名思义就是可以像hbuilder中编......
  • springboot 整合 recketMQ 详细步骤
    前提RocketMQ的部署环境可用1依赖包<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter<......
  • SpringBoot Enum 传参行为学习记录
    在学习springboot枚举值传参序列化时,发现以下行为。@Data@ToStringpublicclassEnumRequest{@ApiModelProperty("订单号")privateStringorderSn;@A......
  • 关于使用wireshark抓包在局域网内,手机向QQ传输文件的实验
    在课堂上,老师向我们介绍并演示了软件wireshark(Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封......
  • springboot中mybatis-plus简单配置与使用
    依赖mybatis-plus与mybatis依赖不兼容,同时使用会导致报错<dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>${or......
  • SpringBoot实战派读书笔记---响应式编程
    1.什么是WebFlux?WebFlux不需要ServletAPI,在完全异步且无阻塞,并通过Reactor项目实现了ReactorStreams规范。WebFlux可以在资源有限的情况下提高系统的吞吐量和......
  • Springboot集成阿里云短信
    目录1前言2准备工作2.1了解流程2.2配置信息2.3短信签名和模板2.3.1签名2.3.2模板2.3.3存入数据库3SDK4集成Springboot4.1集成4.2测试5后记1前言​ 线上系......