From 4cc3765e0db18e2b6fc28dfc9e170e12edf908c7 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 25 Jun 2025 09:35:41 +0800 Subject: [PATCH] verify transport before sending email --- server/controllers/inviteController.js | 7 ++++++- server/service/emailService.js | 11 +++++++++++ server/utils/logger.js | 8 ++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/server/controllers/inviteController.js b/server/controllers/inviteController.js index 3b2212769..3799c58b9 100755 --- a/server/controllers/inviteController.js +++ b/server/controllers/inviteController.js @@ -77,11 +77,16 @@ class InviteController { name: firstname, link: `${clientHost}/register/${inviteToken.token}`, }); - await this.emailService.sendEmail( + const result = await this.emailService.sendEmail( req.body.email, "Welcome to Uptime Monitor", html ); + if (!result) { + return res.error({ + msg: "Failed to send invite e-mail... Please verify your settings.", + }); + } } catch (error) { logger.warn({ message: error.message, diff --git a/server/service/emailService.js b/server/service/emailService.js index 89bd4d50f..433fd0871 100755 --- a/server/service/emailService.js +++ b/server/service/emailService.js @@ -137,6 +137,17 @@ class EmailService { }; this.transporter = this.nodemailer.createTransport(emailConfig); + try { + await this.transporter.verify(); + } catch (error) { + this.logger.warn({ + message: "Email transporter verification failed", + service: SERVICE_NAME, + method: "verifyTransporter", + }); + return false; + } + try { const info = await this.transporter.sendMail({ to: to, diff --git a/server/utils/logger.js b/server/utils/logger.js index 0864176c5..49b875d96 100755 --- a/server/utils/logger.js +++ b/server/utils/logger.js @@ -76,7 +76,7 @@ class Logger { info(config) { const logEntry = this.buildLogEntry("info", config); this.cacheLog(logEntry); - this.logger.info(config.message, logEntry); + this.logger.info(logEntry); } /** @@ -90,7 +90,7 @@ class Logger { warn(config) { const logEntry = this.buildLogEntry("warn", config); this.cacheLog(logEntry); - this.logger.warn(config.message, logEntry); + this.logger.warn(logEntry); } /** @@ -104,7 +104,7 @@ class Logger { error(config) { const logEntry = this.buildLogEntry("error", config); this.cacheLog(logEntry); - this.logger.error(config.message, logEntry); + this.logger.error(logEntry); } /** * Logs a debug message. @@ -117,7 +117,7 @@ class Logger { debug(config) { const logEntry = this.buildLogEntry("debug", config); this.cacheLog(logEntry); - this.logger.debug(config.message, logEntry); + this.logger.debug(logEntry); } cacheLog(entry) {