3ed4729c94
changes sender to no-reply@speckle.systems; updates invite email subject based on wether it's a generic invite or a server invite, etc.
74 lines
1.8 KiB
JavaScript
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 ) {
|
|
|
|
}
|
|
}
|