const nodemailer = require("nodemailer"); const NotificationProvider = require("./notification-provider"); class SMTP extends NotificationProvider { name = "smtp"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { const config = { host: notification.smtpHost, port: notification.smtpPort, secure: notification.smtpSecure, }; // Should fix the issue in https://github.com/louislam/uptime-kuma/issues/26#issuecomment-896373904 if (notification.smtpUsername || notification.smtpPassword) { config.auth = { user: notification.smtpUsername, pass: notification.smtpPassword, }; } let transporter = nodemailer.createTransport(config); let bodyTextContent = msg; if (heartbeatJSON) { bodyTextContent = `${msg}\nTime (UTC): ${heartbeatJSON["time"]}`; } // send mail with defined transport object await transporter.sendMail({ from: `"Uptime Kuma" <${notification.smtpFrom}>`, to: notification.smtpTo, subject: msg, text: bodyTextContent, }); return "Sent Successfully."; } } module.exports = SMTP;