const nodemailer = require('nodemailer'); const env = require('../../config/env'); let transporter; const getTransporter = () => { if (transporter) return transporter; if (env.mail.user && env.mail.pass) { transporter = nodemailer.createTransport({ host: env.mail.host, port: env.mail.port, secure: env.mail.secure, auth: { user: env.mail.user, pass: env.mail.pass, }, tls: { rejectUnauthorized: env.mail.rejectUnauthorized, }, }); return transporter; } transporter = nodemailer.createTransport({ streamTransport: true, newline: 'unix', buffer: true, }); return transporter; }; const sendMail = async ({ to, subject, html, text, attachments }) => { const activeTransporter = getTransporter(); const from = env.mail.from.includes('<') ? env.mail.from : `LinkedSign <${env.mail.from}>`; const info = await activeTransporter.sendMail({ from, replyTo: env.mail.from, to, subject, html, text, attachments, }); return info; }; module.exports = { sendMail, };