Spring Boot Quartz Scheduler Example that schedules Emails to be sent at a later time.
Switch branches/tags
Nothing to show
Clone or download
Rajeev Kumar Singh
Rajeev Kumar Singh Added JPA dependency
Latest commit 7ce7d96 Sep 8, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.mvn/wrapper Initial Commit Sep 3, 2018
src Added JPA dependency Sep 8, 2018
.gitignore Initial Commit Sep 3, 2018
Readme.md Readme fix Sep 4, 2018
mvnw Initial Commit Sep 3, 2018
mvnw.cmd Initial Commit Sep 3, 2018
pom.xml Added JPA dependency Sep 8, 2018


Spring Boot Quartz Scheduler Example: Building an Email Scheduling app

Complete Tutorial: https://www.callicoder.com/spring-boot-quartz-scheduler-email-scheduling-example/


  1. Java - 1.8.x

  2. Maven - 3.x.x

  3. MySQL - 5.x.x

Steps to Setup

1. Clone the application

git clone https://github.com/callicoder/spring-boot-mysql-rest-api-tutorial.git

2. Create MySQL database

create database quartz_demo

3. Change MySQL username and password as per your MySQL installation

open src/main/resources/application.properties, and change spring.datasource.username and spring.datasource.password properties as per your mysql installation

4. Setup Spring Mail

The project is using Gmail's SMTP server for sending emails. Whether you use Gmail or any other SMTP server, you'll need to configure the following mail properties accordingly -


If you're using Gmail, you need to allow the third party apps to send emails by following the instructions below -

5. Create Quartz Tables

The project stores all the scheduled Jobs in MySQL database. You'll need to create the tables that Quartz uses to store Jobs and other job-related data. Please create Quartz specific tables by executing the quartz_tables.sql script located inside src/main/resources directory.

mysql> source <PATH_TO_QUARTZ_TABLES.sql>

6. Build and run the app using maven

Finally, You can run the app by typing the following command from the root directory of the project -

mvn spring-boot:run

Scheduling an Email using the /scheduleEmail API

curl -i -H "Content-Type: application/json" -X POST \
-d '{"email":"callicoder@gmail.com","subject":"Things I wanna say to my Future self","body":"Dear Future me, <br><br> <b>Think Big And Don’t Listen To People Who Tell You It Can’t Be Done. Life’s Too Short To Think Small.</b> <br><br> Cheers, <br>Rajeev!","dateTime":"2018-09-04T16:15:00","timeZone":"Asia/Kolkata"}' \

# Output
{"success":true,"jobId":"0741eafc-0627-446f-9eaf-26f5d6b29ec2","jobGroup":"email-jobs","message":"Email Scheduled Successfully!"}