55 lines
1.1 KiB
JavaScript
55 lines
1.1 KiB
JavaScript
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,
|
|
};
|