From aafc565dcbbbf0a90eac8bf520a36907c0ee7bbb Mon Sep 17 00:00:00 2001 From: Jared Schoeny Date: Sat, 13 Jun 2026 00:05:29 -0600 Subject: [PATCH] Use singleton for mail transporter --- src/utils/email.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/utils/email.ts b/src/utils/email.ts index d503e79..df16cf7 100644 --- a/src/utils/email.ts +++ b/src/utils/email.ts @@ -1,4 +1,7 @@ import nodemailer from "nodemailer"; +import type Transporter from "nodemailer/lib/mailer"; + +let transporter: Transporter | null = null; const sanitizeEmailSubject = (subject: string) => { return subject @@ -9,15 +12,18 @@ const sanitizeEmailSubject = (subject: string) => { }; export const createMailTransporter = () => { - return nodemailer.createTransport({ - host: process.env.SMTP_HOST!, - port: Number(process.env.SMTP_PORT!), - requireTLS: true, - auth: { - user: process.env.SMTP_USER!, - pass: process.env.SMTP_PASS!, - }, - }); + if (!transporter) { + transporter = nodemailer.createTransport({ + host: process.env.SMTP_HOST!, + port: Number(process.env.SMTP_PORT!), + requireTLS: true, + auth: { + user: process.env.SMTP_USER!, + pass: process.env.SMTP_PASS!, + }, + }); + } + return transporter; }; // At least one of html or text must be provided