首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【发邮件】使用Java的定时任务库Quartz来定时获取MySQL数据并发送邮件

【发邮件】使用Java的定时任务库Quartz来定时获取MySQL数据并发送邮件

作者头像
用户1750537
发布2025-08-29 14:26:08
发布2025-08-29 14:26:08
7300
代码可运行
举报
运行总次数:0
代码可运行
在这里插入图片描述
在这里插入图片描述

欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199

使用Java的定时任务库Quartz来定时获取MySQL数据并发送邮件。下面是一个简单的示例代码:

  1. 首先,你需要添加以下依赖到你的Maven项目中:
代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.5</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
  1. 创建一个类来实现定时任务的逻辑,例如EmailSenderJob
代码语言:javascript
代码运行次数:0
运行
复制
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class EmailSenderJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 获取数据库连接
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "root", "123456");
            Statement statement = connection.createStatement();
            
            // 查询需要发送的数据
            ResultSet resultSet = statement.executeQuery("SELECT * FROM data");

            // 处理结果集,发送邮件
            while (resultSet.next()) {
                String email = resultSet.getString("email");
                String subject = resultSet.getString("subject");
                String content = resultSet.getString("content");
                sendEmail(email, subject, content);
            }
            
            resultSet.close();
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    private void sendEmail(String toAddress, String subject, String content) throws EmailException {
        // 创建邮件
        Email email = new SimpleEmail();
        email.setHostName("your_smtp_host");
        email.setSmtpPort(25);
        
        // 设置发件人信息
        email.setFrom("your_email_address", "Your Name");
        
        // 设置收件人信息
        email.addTo(toAddress);
        
        // 设置邮件主题和内容
        email.setSubject(subject);
        email.setMsg(content);
        
        // 发送邮件
        email.send();
    }
    
    public static void main(String[] args) throws SchedulerException {
        // 创建JobDetail
        JobDetail job = JobBuilder.newJob(EmailSenderJob.class)
                .withIdentity("emailSenderJob", "emailSenderGroup")
                .build();

        // 创建Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("emailSenderTrigger", "emailSenderGroup")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 0/1 * * ?"))
                .build();

        // 创建SchedulerFactory并获取Scheduler实例
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        // 注册Job和Trigger并启动定时任务
        scheduler.scheduleJob(job, trigger);
        scheduler.start();
    }
}

注意替换代码中的your_databaseyour_usernameyour_password等为你的数据库信息,以及your_smtp_hostyour_email_address为你的SMTP服务器和邮箱地址。

main方法中,我们创建了一个JobDetail对象来定义要执行的任务,然后创建了一个Trigger对象来定义任务的触发时间。最后,我们使用SchedulerFactory创建了一个Scheduler实例,并通过调用scheduleJob方法将JobDetailTrigger注册到Scheduler,然后启动定时任务。

此时,当定时任务触发时,EmailSenderJob中的execute方法将会被执行,即获取数据库数据并发送邮件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档