IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot定时发送邮箱给指定人(老板再也不用天天问我网站运营的如何了) -> 正文阅读

[Java知识库]springboot定时发送邮箱给指定人(老板再也不用天天问我网站运营的如何了)

一、应用场景案例

假如你开发的网站刚上线,老板每天早晨都要问你今天网站注册了多少人,然后你就要去查看数据库,然后将数据通过邮箱发送给老板,久而久之,他天天问,你就很烦他了。
那么,你就可以使用定时任务每天定时(假设早上八点)把前24小时内网站注册的人数通过邮箱发送给老板。
能通过机器干的事情为什么要通过人呢?

二、分析

首先我们需要分步骤进行:

  • 1、定时任务
  • 2、发送邮箱
  • 3、统计今日网站注册人数

三、代码实现

启动类上添加注解
EnableScheduling
在这里插入图片描述

任务类

@Component
public class MyTask {

    @Autowired
    private ITaskService taskService;

    /**
     * 统计注册数量,邮箱发送任务
     */
    public void regNumberTask() {
        taskService.countRegNumber();
    }

}

pom.xml添加依赖:

    <!-- email发送-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

yml配置文件
在这里插入图片描述
username:为发送者的邮箱
password:注意不是密码 而是邮箱授权码
host:是通过哪个服务器发送 我们这里用的是163邮箱


这里为了方便这里 10点半定时发送邮件
cron表达式可以通过此网址查看 cron表达式生成器

@Service
@Slf4j
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private TaskMapper taskMapper;

    /**
     * 获取配置文件中的发送人
     */
    @Value("${spring.mail.username}")
    private String from;


    @Override
    public String findCronById(Long id) {
        Task task = taskMapper.selectById(id);
        return task.getCron();
    }

    /**
     * 自动统计数据 然后发送邮件
     * 固定时间点发送邮件
     */
    @Scheduled(cron = "0 30 10 * * ?")
    @Override
    public void countRegNumber() {
        //注册人数
        int count = 0;

        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<User>();
        List<User> users = userMapper.selectList(lambdaQueryWrapper);
        for (User u :
                users) {
            Date regTime = u.getRegTime();
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(regTime);
            Calendar base = Calendar.getInstance();
            base.setTime(new Date());
            base.add(Calendar.DATE, -1);
            //时间差小于1天
            if (calendar.compareTo(base) >= 0) {
                count++;
            }
        }


        //定时发送邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //发送邮件的工具类
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);

        try {
            mimeMessageHelper.setSubject(new Date() + ":网站注册人数报告");
                       mimeMessageHelper.setText("公司今日网站注册人数为" + count + "人\n咋啥时候涨工资啊?");
            mimeMessageHelper.setFrom(from);
            //发送到哪个邮箱
            mimeMessageHelper.setTo("1741733558@qq.com");

            //打印日志
            log.info("今日邮件已经发送~~~今日共注册:" + count + "人");
            //发送
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }
}

四、查看邮箱

在这里插入图片描述
数据库中今日注册人数是3人

!!!10点半到了!!!

在这里插入图片描述

邮箱就发送来了

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

五、总结

但是 这样也有缺点。有一天,你天天给老板发送邮箱,你的老板也烦你了。他不让天天发了,让你一个星期甚至一个月再给他发送数据,那么你就要停用服务器 去修改代码。
但是为了良好的体验,我们需要将cron表达式存到数据库中,然后动态获取值。
那么应该如何实现呢?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:26:07  更:2022-02-22 20:26:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:25:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码