0427f5cfd1
Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com>
63 lines
1.5 KiB
JavaScript
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
|
|
}
|