Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import type { MailerConfig } from "config"; import { getLogger } from "log"; import nodemailer from "nodemailer"; import type JSONTransport from "nodemailer/lib/json-transport"; import type Mail from "nodemailer/lib/mailer"; const log = getLogger("mail"); const devTransporter = nodemailer.createTransport({ jsonTransport: true, }); export const outbox: JSONTransport.SentMessageInfo[] = []; function instantiateMailer(config: MailerConfig): nodemailer.Transporter { if ( "host" in config && "port" in config && "secure" in config && "auth" in config ) { return nodemailer.createTransport(config); } return config as nodemailer.Transporter; } export async function sendMail( config: MailerConfig, mailOptions: Mail.Options, ): Promise<void> { if ( process.env.NODE_ENV === "test" || process.env.NODE_ENV === "development" ) { const result = await devTransporter.sendMail(mailOptions); outbox.push(result); log.info("Email sent to dev outbox -------------", mailOptions); log.info(result.envelope); log.info(result.message); return; } await instantiateMailer(config).sendMail(mailOptions); } |