Files
speckle-server/packages/server/modules/emails/utils/transporter.ts
T
Iain Sproat 444d2ca7dd Structured logging (attempt 2) (#1234)
* Revert "Revert "feat(structured logging): implements structured logging for backend (#1217)" (#1227)"

This reverts commit 63e6581162.

* Use pino-http instead of express pino logger
* Use correct reference to knex and do not instantiate HttpLogger prematurely
* Adds missing dependency for pino to webhook-service
* Do not instantiate middleware when passed to express
* Refactor to move logging into shared
* Copy shared packages into dockerfiles
* Build shared workspace in docker build-stage for fileimport & webhook
2022-12-05 14:49:52 +00:00

48 lines
1.4 KiB
TypeScript

import { logger, moduleLogger } from '@/logging/logging'
import { createTransport, Transporter } from 'nodemailer'
let transporter: Transporter | undefined = undefined
const createJsonEchoTransporter = () => createTransport({ jsonTransport: true })
const initSmtpTransporter = async () => {
try {
const smtpTransporter = createTransport({
host: process.env.EMAIL_HOST || 'localhost',
port: parseInt(process.env.EMAIL_PORT || '587'),
secure: process.env.EMAIL_SECURE === 'true',
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD
},
pool: true,
maxConnections: 20,
maxMessages: Infinity
})
await smtpTransporter.verify()
return smtpTransporter
} catch (e) {
logger.error('📧 Email provider is misconfigured, check config variables.', e)
}
}
export async function initializeTransporter(): Promise<Transporter | undefined> {
let newTransporter = undefined
if (process.env.NODE_ENV === 'test') newTransporter = createJsonEchoTransporter()
if (process.env.EMAIL === 'true') newTransporter = await initSmtpTransporter()
if (!newTransporter) {
moduleLogger.warn(
'📧 Email provider is not configured. Server functionality will be limited.'
)
}
transporter = newTransporter
return newTransporter
}
export function getTransporter(): Transporter | undefined {
return transporter
}