/** SMTP email notifications via nodemailer. */ import nodemailer from 'nodemailer'; import type { SmtpConfig } from '../db'; import type { NotificationPayload, NotificationResult } from './shared'; export async function sendSmtpNotification(config: SmtpConfig, payload: NotificationPayload): Promise { try { const transporter = nodemailer.createTransport({ host: config.host, port: config.port, secure: config.secure, auth: config.username ? { user: config.username, pass: config.password } : undefined, tls: config.skipTlsVerify ? { rejectUnauthorized: false } : undefined }); const envBadge = payload.environmentName ? `${payload.environmentName}` : ''; const envText = payload.environmentName ? ` [${payload.environmentName}]` : ''; const html = `

${payload.title}${envBadge}

${payload.message}


Sent by Dockhand

`; await transporter.sendMail({ from: config.from_name ? `"${config.from_name}" <${config.from_email}>` : config.from_email, to: config.to_emails.join(', '), subject: `[Dockhand]${envText} ${payload.title}`, text: `${payload.title}${envText}\n\n${payload.message}`, html }); return { success: true }; } catch (error) { const errorMsg = error instanceof Error ? error.message : String(error); return { success: false, error: `SMTP error: ${errorMsg}` }; } }