Files
pawol.nu/lib/sendmail.js
T

52 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-02-19 21:56:23 +04:00
const nodemailer = require('nodemailer')
2022-09-05 21:33:18 +04:00
const {pick} = require('lodash')
2022-02-19 21:56:23 +04:00
function createTransport() {
if (!process.env.SMTP_HOST && process.env.NODE_ENV === 'production') {
throw new Error('SMTP_HOST must be provided in production mode')
}
if (process.env.SMTP_HOST) {
return nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT || 587,
secure: process.env.SMTP_SECURE === 'YES',
auth: {
user: process.env.SMTP_USERNAME,
pass: process.env.SMTP_PASSWORD
}
})
}
return nodemailer.createTransport({
streamTransport: true,
newline: 'unix',
buffer: true
})
}
const transport = createTransport()
async function sendMail(email, recipients = []) {
if (recipients.length === 0) {
throw new Error('At least one recipient must be provided')
}
const info = await transport.sendMail({
...pick(email, 'text', 'html', 'subject'),
from: process.env.SMTP_FROM,
to: recipients,
bcc: process.env.SMTP_BCC ? process.env.SMTP_BCC.split(',') : undefined
})
if (process.env.SHOW_EMAILS === 'YES' && transport.transporter.options.streamTransport) {
console.log('-----------------------')
console.log(info.message.toString())
console.log('-----------------------')
}
return info
}
module.exports = {sendMail, createTransport, transport}