UNPKG

@krypton-org/krypton-auth

Version:

Express authentication middleware, using GraphQL and JSON Web Tokens.

68 lines 2.4 kB
"use strict"; /** * 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