You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.4 KiB
JavaScript

'use strict';
const nodemailer = require("nodemailer");
const objectPick = require("object.pick");
function getNodemailerOptions(config) {
if (config.nodemailer == null) {
return {};
} else {
return objectPick(config.nodemailer, [
"secure", "ignoreTLS", "requireTLS", "tls",
"localAddress", "connectionTimeout", "greetingTimeout", "socketTimeout"
]);
}
}
function getTransportOptions(config, nodemailerOptions) {
if (config.smtp == null) {
console.error("WARNING: Sending e-mails directly to the recipient's mailserver. If you are not explicitly whitelisting the source, your notifications will most likely end up in Spam. Add an SMTP relay to your configuration file to avoid this issue.");
return Object.assign(nodemailerOptions, {
direct: true
});
} else {
return Object.assign(nodemailerOptions, {
host: config.smtp.hostname,
port: config.smtp.port,
auth: {
user: config.smtp.username,
pass: config.smtp.password
}
});
}
}
module.exports = function createEmailSender(config) {
let nodemailerOptions = getNodemailerOptions(config);
let transportOptions = getTransportOptions(config, nodemailerOptions);
return nodemailer.createTransport(transportOptions, config.metadata);
};