Files
speckle-server/packages/server/modules/emails/index.js
T
Dimitrie Stefanescu 3ed4729c94 feat(server/invites): fixes a bug in 3rd party strategies & invites, and other changes
changes sender to no-reply@speckle.systems; updates invite email subject based on wether it's a
generic invite or a server invite, etc.
2021-03-22 18:44:58 +00:00

74 lines
1.8 KiB
JavaScript

/* istanbul ignore file */
'use strict'
let debug = require( 'debug' )
const appRoot = require( 'app-root-path' )
const nodemailer = require( 'nodemailer' )
let account, transporter
exports.init = async ( app, options ) => {
debug( 'speckle:modules' )( '📧 Init emails module' )
if ( process.env.NODE_ENV === 'test' ) {
account = await nodemailer.createTestAccount()
transporter = nodemailer.createTransport( {
host: 'smtp.ethereal.email',
port: 587,
secure: false,
auth: {
user: account.user,
pass: account.pass
}
} )
return
}
if ( process.env.EMAIL === 'true' ) {
try {
transporter = 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
}
} )
} catch ( e ) {
debug( 'speckle:modules' )( '📧 Failed to initialise email provider.' )
}
} else {
debug( 'speckle:modules' )( '📧 Failed to initialise email provider. Server functionality will be limited.' )
}
}
exports.finalize = async () => {
// Nothing to do here.
}
exports.transporter = transporter
exports.sendEmail = async( { from, to, subject, text, html } ) => {
if ( !transporter ) {
debug( 'speckle:errors' )( 'No email transport present. Cannot send emails.' )
return false
}
try {
let info = await transporter.sendMail( {
from: from || '"Speckle" <no-reply@speckle.systems>',
to,
subject,
text,
html
} )
if ( process.env.NODE_ENV === 'test' ) {
debug( 'speckle:test' )( nodemailer.getTestMessageUrl( info ) )
}
} catch ( e ) {
}
}