@krypton-org/krypton-auth
Version:
Express authentication middleware, using GraphQL and JSON Web Tokens.
68 lines • 2.4 kB
JavaScript
;
/**
* Module defining the send email function according to the configuration passed by package users in `emailConfig`.
* @module mailer/Mailer;'
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ejs_1 = __importDefault(require("ejs"));
const nodemailer_1 = __importDefault(require("nodemailer"));
const config_1 = __importDefault(require("../config"));
const ErrorTypes_1 = require("../error/ErrorTypes");
let transporter;
if (config_1.default.nodemailerConfig) {
transporter = nodemailer_1.default.createTransport(config_1.default.nodemailerConfig);
}
else {
nodemailer_1.default.createTestAccount((err, account) => {
config_1.default.serviceReady({ isTestEmailReady: true });
// create reusable transporter object using the default SMTP transport
transporter = nodemailer_1.default.createTransport({
auth: {
pass: account.pass,
user: account.user,
},
host: 'smtp.ethereal.email',
port: 587,
secure: false,
});
});
}
/**
* Function to send an email.
* @param {Email} email
* @returns {Promise<SentMessageInfo>} Promise to the send message info.
*/
function send(email) {
return new Promise((resolve, reject) => {
const recipient = email.recipient;
const subject = email.subject;
const locals = email.locals;
const template = email.template;
ejs_1.default.renderFile(template, locals, {}, (renderErr, html) => {
if (renderErr) {
reject(renderErr);
}
else {
const mailOptions = {
from: config_1.default.mailFrom,
html,
subject,
to: recipient,
};
transporter.sendMail(mailOptions, (sendEmailErr, info) => {
if (sendEmailErr) {
reject(new ErrorTypes_1.EmailNotSentError(sendEmailErr.message));
}
else {
resolve(info);
}
});
}
});
});
}
exports.default = send;
//# sourceMappingURL=Mailer.js.map