Files
speckle-server/packages/server/modules/emails/utils/transporter.js
T
2022-08-11 11:00:01 +03:00

63 lines
1.5 KiB
JavaScript

const debug = require('debug')('speckle')
const nodemailer = require('nodemailer')
const modulesDebug = debug.extend('modules')
const errorDebug = debug.extend('errors')
/** @type {import('nodemailer').Transporter | undefined} */
let transporter = undefined
const createJsonEchoTransporter = () =>
nodemailer.createTransport({
jsonTransport: true
})
const initSmtpTransporter = async () => {
try {
const smtpTransporter = nodemailer.createTransport({
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_PORT || 587,
secure: process.env.EMAIL_SECURE === 'true',
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD
}
})
await smtpTransporter.verify()
return smtpTransporter
} catch {
errorDebug('📧 Email provider is misconfigured, check config variables.')
}
}
/**
* @returns {import('nodemailer').Transporter | undefined}
*/
async function initializeTransporter() {
let newTransporter = undefined
if (process.env.NODE_ENV === 'test') newTransporter = createJsonEchoTransporter()
if (process.env.EMAIL === 'true') newTransporter = await initSmtpTransporter()
if (!newTransporter) {
modulesDebug(
'📧 Email provider is not configured. Server functionality will be limited.'
)
}
transporter = newTransporter
return newTransporter
}
/**
* @returns {import('nodemailer').Transporter | undefined}
*/
function getTransporter() {
return transporter
}
module.exports = {
initializeTransporter,
getTransporter
}