SpringBoot整合QQ邮箱

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件....

下面按步骤进行:

1.获取QQ邮箱授权码

1.1 登录QQ邮箱

1.2 开启SMTP服务

找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

1.3 获取授权码

进入上图中的【管理服务】后:在【安全设置中生成授权码】,也可以直接点击【继续生成授权码】来生成...

2.导入依赖

自己新建一个SpringBoot项目,在pom.xml文件中导入依赖:

java 复制代码
<!-- 邮件依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3.配置文件

导入依赖后在配置文件中添加以下配置(本文章使用properties文件):

java 复制代码
spring.mail.host=smtp.qq.com
spring.mail.port=587
# 用于发送验证码的qq邮箱
spring.mail.username=(此处换成自己的QQ邮箱地址)
# 邮箱授权码
spring.mail.password=(换成上面邮箱的授权码)
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
# 使用587接口需要启用STARTTLS加密
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

4.发送邮件

此处只演示service层发送邮件代码。

java 复制代码
@Service
public class MailServer {

    @Autowired
    private JavaMailSender javaMailSender;

    //发送邮件方法
    public ResponseResult sendAuthCode(String emailAddress) throws MessagingException, UnsupportedEncodingException {
        
        MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage);
        
        String myEmail = "我的邮箱";
        String displayName = "发送邮箱时显示的名称";  //这个可以不选 
        String emailAddress = "目标邮箱地址";
        String subject = "邮件主题";   
        String text = "邮件内容";    

        mimeMessageHelper.setFrom(myEmail,displayName);
        mimeMessageHelper.setTo(emailAddress);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(text);

        try {
            javaMailSender.send(mimeMailMessage);
            authCodeUtil.setAuthCodeIntoRedis(emailAddress,authCode);
        } catch (MailException e) {
            return "无法发送邮件";
        }
        return "发送成功";
    }

}

可能遇见的问题

在springboot整合QQ邮箱的过程中,可能回遇到 "连接超时",这时检查配置文件中的邮箱地址、授权码,如果这两项没错的话可能是网络问题,我们可以在终端ping一下qq邮箱的邮件发送服务器看一下当前网络是否可以连接qq邮箱,如下图:

如果结果是"请求超时"的话建议换个网络再尝试。。。。

相关推荐
shenlongproxy5 分钟前
代理IP故障演练怎么做:注入怎么分档、恢复怎么判定
后端
知识搬运临时工5 分钟前
Kafka 发 1 GiB 数据,用户态 CPU 只花 0.016 秒,总耗时反而慢了 11%
后端·kafka
wt95276 分钟前
VMware 虚拟机磁盘扩容实战文档(Ubuntu 22.04 + LVM)
linux·后端
王中阳Go6 分钟前
预算给够了,时间花错了地方:三跳链路给了 27 秒,实际只用掉 9 秒
人工智能·后端·性能优化
做科研的周师兄9 分钟前
【R语言实战】MixSIAR 氢氧同位素水源解析全流程:从混合空间校验到贝叶斯 MCMC 收敛诊断(后附完整代码)
java·大数据·开发语言
用户3949950846311 分钟前
文件变了,inotify 为什么没反应
后端
陈随易17 分钟前
神级 Skill,让 AI 用 HTML 代替 Markdown 回复
前端·后端·程序员
Gopher_HBo17 分钟前
go tool trace 使用指南(Go 1.24)
后端
一条Go18 分钟前
能力套餐:菜单、权限、开通范围怎么拆成三层而不打架
后端·github·saas
dpharness18 分钟前
我给 DSH 装记忆插件,踩了五个坑,其中一个让我丢了一条记录
后端