栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot如何发送邮件,以及邮件的异步和定时任务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot如何发送邮件,以及邮件的异步和定时任务

文章目录
    • 1.创建SpringBoot项目
    • 2.配置
    • 3.写代码发邮件
    • 4.邮件的异步、定时任务

1.创建SpringBoot项目

引入依赖:


    org.springframework
    spring-context-support



    org.springframework.boot
    spring-boot-starter-mail

2.配置
spring:
  mail:
    username: 2944397754@qq.com  
    password: xqqtyadfkcptddhd
    default-encoding: UTF-8
    host: smtp.qq.com
    properties:
      mail:
        smtp:
          auth: true
          port: 587
          starttls:
            enable: true
            required: true

说明:

首先我了解了一下SMTP协议:

​ SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输

SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转用户发出的电子邮件

它的工作流程如下:

  1. 建立连接:

    smtp用户与smtp服务器25号端口建立连接(该端口对应smtp服务)

  2. 传送邮件

    SMTP客户将邮件的源地址、目的地址和邮件的具体内容传递给SMTP服务器,SMTP服务器进行相应的响应并接收邮件。

  3. 释放连接

STARTTLS:

​ 是一种明文通信协议的扩展,能够让明文的通信连线直接成为加密连线(使用SSL或TLS加密),而不需要使用另一个特别的端口来进行加密通信,属于机会性加密。

如何获取授权码?

首页点击设置

点击账户,往下滑

3.写代码发邮件
  1. 发送简单邮件

  1. 发送富文本邮件

发送含图片的邮件:

//创建邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //需要使用MimeMessageHelper类对mimeMessage操作,并开启文件传输
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        //发送方
        mimeMessageHelper.setFrom("xiangpei.code@qq.com");
        //接收方
        mimeMessageHelper.setTo("xiangpei.code@qq.com");
        //主题
        mimeMessageHelper.setSubject("富文本邮件图片测试");
        //内容,这里是发送html的内容,需要开启为true,添加图片
        mimeMessageHelper.setText("Hello World!",true);
        //图片路径
        File file = new File("C:\Users\29443\Desktop\qq.jpg");
        //添加内嵌图片
        mimeMessageHelper.addInline("test",file);
        //发送文件
        javaMailSender.send(mimeMessage);

发送带附件的,简单了只需要在上面的代码中加一句代码

4.邮件的异步、定时任务

我们知道,发送一封邮件是需要一定时间的,大概需要等5秒?10秒?

在正真的业务开发中,用户发了一个请求,需要发送邮件,我们不肯

可能说等到邮件发送成功才响应给用户,你愿意点击一个按钮10秒才给你响应吗?

添加异步,我们就能够立即响应,而邮件的发送就让它执行去吧

如何使用异步

  1. 入口类加上@EnableAsync
  2. 需要异步的方法上添加@Async(我们这里是发邮件,就加在发邮件的方法上)

就ok了

邮件定时任务

@EnableScheduling    //启动类加
@Scheduled(cron = " 0 0 20 * * ?")   //方法上加

在需要的方法上加上就行了,这里是每天晚上8点执行

这里我们需要了解 corn 表达式,我也不会https://www.bejson.com/othertools/cron/,这是模拟corn的,可以计算最近10次发生的时间,也可以生成corn,非常好用建议收藏

首先它是由 6或者7个域组成,多一个是年份,因为不常用年来设置定时任务,所以可以不写年

顺序为:

秒----分-----时-----日-----月-----星期-----年

0:意思时,舍弃你这个域,我判断是否执行时不会看你(日、月、星期、年都不能设置0

:代表任意,比如 * 10 * * * ?,(不写年也代表任意年)就是任意的年的任意月份的某天不管星期几的随意小时的第10分钟的任意一秒都会执行这个任务,?号与的区别就是,?只能在星期、年上使用

下面是比较官方的解释:https://www.bejson.com/othertools/cronvalidate/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号