From 86e07c98e144de2cdfb8e7e52aa371f9430db187 Mon Sep 17 00:00:00 2001 From: "DATAEXPRESS\\4734" Date: Tue, 10 Mar 2026 18:06:15 +0800 Subject: [PATCH] fix mail function --- .env | 1 + src/config/db2.js | 29 +++++++++++++++++++++++++++++ src/services/mailService.js | 12 +++++++----- 3 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/config/db2.js diff --git a/.env b/.env index cb14268..3b04642 100644 --- a/.env +++ b/.env @@ -8,6 +8,7 @@ DB_PORT=3306 DB_USER=root DB_PASSWORD="1qazCDE#" DB_NAME=eis_demo +MAIL_DB_NAME=zenclouddb # --- Mail 寄送設定 (以 Gmail 為例) --- # 注意:若使用 Gmail,請務必開啟「兩步驟驗證」並申請「應用程式密碼」 diff --git a/src/config/db2.js b/src/config/db2.js new file mode 100644 index 0000000..6d3d5e9 --- /dev/null +++ b/src/config/db2.js @@ -0,0 +1,29 @@ +const mysql = require('mysql2/promise'); +require('dotenv').config(); + +const pool2 = mysql.createPool({ + host: process.env.DB_HOST, + port: process.env.DB_PORT || 3306, + user: process.env.DB_USER, + password: process.env.DB_PASSWORD, + database: process.env.MAIL_DB_NAME, + waitForConnections: true, + connectionLimit: 15, // 憓雿萇潸賢 + queueLimit: 0, + multipleStatements: true, + charset: 'utf8mb4', // 蝣箔銝銵摮 + timezone: '+08:00', // 撘瑕嗆銝 + dateStrings: true // 撘瑕嗅交雿箏銝脣喉踹 Node.js 脰鈭甈⊥頧 +}); + +// 皜祈岫 +pool2.getConnection() + .then(conn => { + console.log(' MariaDB Connected Successfully.'); + conn.release(); + }) + .catch(err => { + console.error(' MariaDB Connection Failed:', err.message); + }); + +module.exports = pool2; \ No newline at end of file diff --git a/src/services/mailService.js b/src/services/mailService.js index ab60362..fa7fe81 100644 --- a/src/services/mailService.js +++ b/src/services/mailService.js @@ -1,6 +1,6 @@ const nodemailer = require('nodemailer'); const schedule = require('node-schedule'); -const db = require('../config/db'); +const db2 = require('../config/db2'); // connect to zenclouddb for mail const logger = require('../utils/logger'); // 必須引入! class MailService { @@ -18,7 +18,7 @@ class MailService { schedule.scheduleJob('*/30 * * * * *', async () => { try { // 增加一個簡單的連線檢查,避免資料庫掛掉時噴錯 - const [rows] = await db.query('SELECT * FROM zen_mail_list WHERE mail_status = 0 LIMIT 10'); + const [rows] = await db2.query('SELECT * FROM zen_mail_list WHERE mail_status = 0 LIMIT 10'); if (rows.length > 0) { logger.info(`AutoMail: Processing ${rows.length} messages.`); @@ -30,12 +30,14 @@ class MailService { from: process.env.MAIL_USER, to: row.recipient, subject: row.mail_subject, - html: row.content + // html: row.content + // Modify By Michael 20260310 + text: row.content }); - await db.query('UPDATE zen_mail_list SET mail_status = 1, sent_at = NOW() WHERE id = ?', [row.id]); + await db2.query('UPDATE zen_mail_list SET mail_status = 1, create_date = NOW() WHERE id = ?', [row.id]); } catch (mailErr) { logger.error(`Mail ID ${row.id} failed: ${mailErr.message}`); - await db.query('UPDATE zen_mail_list SET mail_status = 9, error_log = ? WHERE id = ?', [mailErr.message, row.id]); + await db2.query('UPDATE zen_mail_list SET mail_status = 9, error_log = ? WHERE id = ?', [mailErr.message, row.id]); } } } catch (dbErr) {