基于SpringBoot实现QQ邮箱发送短信功能 | 免费短信服务

开发学习过程中有个短信发送功能,阿里云腾讯云等等都要money,听说qq邮箱可以实现免费发送邮箱的功能(短信发送的平替),就用这个来实现!!!【找了好多好多方法才成功的啊啊啊啊!!!】

标题

第一步:开启QQ邮箱的POP3...服务

参考https://blog.csdn.net/weixin_41957626/article/details/131386155的前半部分来开启相关的邮箱服务(后面代码部分没有参考,因为报错)

第二步:在SpringBoot项目中开发

首先在application.yml文件中进行配置:

java 复制代码
spring:
  mail:
    host: smtp.qq.com
    username: ****@qq.com  # 自己的qq邮箱
    password: ********  # 第一步中获取的授权码,不是qq密码!
    default-encoding: UTF-8
    port: 587  # 端口号465或587
    protocol: smtp
    # 其他参数
    properties:
      mail:
        #配置SSL,加密工厂,必须配置!否则会报530 ssl错误
        smtp:
#          socketFactoryClass: javax.net.ssl.SSLSocketFactory
#          auth: true
          starttls:
#            enable: ture
            required: true  # 测试了下这个必须加
        #开启debug模式,邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: true

接着写controller

java 复制代码
@RestController
@RequestMapping("/email")
public class EmailController {
    @Resource
    private JavaMailSender javaMailSender;

    //读取yml文件中username的值并赋值给from
    @Value("${spring.mail.username}")
    private String from;


    @GetMapping("sendEmail")
    public String sendSimpleMail(@RequestParam(value = "emailReceiver") String emailReceiver) {
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件发送者
        message.setFrom(from);
        // 设置邮件接收者
        message.setTo(emailReceiver);
        // 设置邮件的主题
        message.setSubject("登录验证码");
        // 设置邮件的正文
        Random random = new Random();
        StringBuilder code = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int r = random.nextInt(10);
            code.append(r);
        }
        String text = "您的验证码为:" + code + ",请勿泄露给他人。";
        System.out.println("验证码:"+code);
        message.setText(text);
        // 发送邮件
        try {
            javaMailSender.send(message);
            return "发送成功";
        } catch (MailException e) {
            e.printStackTrace();
        }
        return "发送失败";
    }
}

postman中发送请求

成功!!!!

相关推荐
zs宝来了18 分钟前
Playwright 自动发布 CSDN 的完整实践
java
彭于晏Yan1 小时前
Redisson分布式锁
spring boot·redis·分布式
吴声子夜歌1 小时前
TypeScript——基础类型(三)
java·linux·typescript
GetcharZp2 小时前
Git 命令行太痛苦?这款 75k Star 的神级工具,让你告别“合并冲突”恐惧症!
后端
Victor3562 小时前
MongoDB(69)如何进行增量备份?
后端
Victor3562 小时前
MongoDB(70)如何使用副本集进行备份?
后端
DynamicsAgg3 小时前
企业数字化底座-k8s企业实践系列第二篇pod创建调度
java·容器·kubernetes
千寻girling3 小时前
面试官 : “ 说一下 Python 中的常用的 字符串和数组 的 方法有哪些 ? ”
人工智能·后端·python
森林里的程序猿猿3 小时前
并发设计模式
java·开发语言·jvm