根據資料庫所查資料進行郵件定時傳送
阿新 • • 發佈:2021-01-09
根據資料庫所查資料進行郵件定時傳送
專案地址:https://gitee.com/AirOranges/email-crontab
功能需求
定期從資料庫中獲取資料,並將所獲取資料以郵件形式傳送給需求者。
介紹
定時傳送郵件程式,使用多資料庫源,可從mysql,oracle 中 讀取資料進行傳送。
軟體架構
使用springboot 2.3.5.RELEASE 作為主要框架
使用quartz 作為定時任務排程框架
使用springboot 整合mail 進行郵件傳送
使用easypoi 將資料生成excel
整合mysql ,oracle 驅動 使用阿里資料庫連線池
使用velocity 作為velocity程式碼生成使用模板
使用mybatis 作為持久層查詢
安裝教程
- mvn clean
- mvn package
- 匯入sql ./sql/email-crontab.sql
- java -jar ./target/email-crontab.jar --spring.profiles.active=pro
使用說明
-
修改application-pro.yml 檔案配置
server: session-timeout: 28800 # tomcat: # max-threads: 1000 # min-spare-threads: 30 # 埠修改
-
修改config.json 配置
[ { "sql": [ { "sqlName": "SELECT * FROM email_crontab_test", "sqlContent": "第一封郵件測試主資料庫1" }, { "sqlName": "SELECT * FROM email_crontab_test_copy", "sqlContent": "第一封郵件測試主資料庫2" } ], "subject": "第一封郵件測試主資料庫", "content": "第一封郵件測試主資料庫", "useDataSource": "master", "toList": [ { "toName": "顧明傑qq", "toMail": "[email protected]" }, { "toName": "顧明傑gmail", "toMail": "[email protected]" } ], "ccList": [ { "toName": "顧明傑qq", "toMail": "[email protected]" }, { "toName": "顧明傑gmail", "toMail": "[email protected]" } ] }, { "sql": [ { "sqlName": "select * from user_tables", "sqlContent": "第二封郵件測試從資料庫" } ], "subject": "第二封郵件測試從資料庫", "content": "第二封郵件測試從資料庫", "useDataSource": "oracle", "toList": [ { "toName": "顧明傑qq", "toMail": "[email protected]" }, { "toName": "顧明傑gmail", "toMail": "[email protected]" } ], "ccList": [ { "toName": "顧明傑qq", "toMail": "[email protected]" }, { "toName": "顧明傑gmail", "toMail": "[email protected]" } ] } ]
-
修改日誌檔案配置 logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--定義日誌檔案的儲存地址 勿在 LogBack 的配置中使用相對路徑--> <!--<property name="LOG_HOME" value="/home" />--> <!-- 控制檯輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字元寬度%msg:日誌訊息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日誌檔案 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日誌檔案輸出的檔名--> <!--<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>--> <FileNamePattern> applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log </FileNamePattern> <!--日誌檔案保留天數--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字元寬度%msg:日誌訊息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日誌檔案最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 日誌輸出級別 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>