Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 3x 1x 2x 2x 2x 7x 7x 7x | import nodemailer from "nodemailer"; import dotenv from "dotenv"; import path from "path"; import hbs from "nodemailer-express-handlebars"; dotenv.config(); // ---------------NodeMailer Setup--------------------------- let isMailConfigured = false; const NODEMAILER_FROM = process.env.NODEMAILER_FROM; const isServiceBasedConfig = !!process.env.NODEMAILER_SERVICE; const transportOption = { auth: { user: process.env.NODEMAILER_USER, pass: process.env.NODEMAILER_PASS, }, ...(isServiceBasedConfig ? { service: process.env.NODEMAILER_SERVICE } : { host: process.env.NODEMAILER_HOST, port: Number(process.env.NODEMAILER_PORT), secure: true, }), }; let transporter = nodemailer.createTransport(transportOption); transporter.verify(function (error: any) { if (error) { return console.error(`Mailer not connected, Reason: ${error.message}`); } console.log("Mailer connected"); console.log(`All mails will be send from ${NODEMAILER_FROM}`); isMailConfigured = true; }); // ------------------Setup mail templates-------------------- // point to the template folder const handlebarOptions = { viewEngine: { partialsDir: path.resolve("./views/templates/mail"), defaultLayout: "", }, viewPath: path.resolve("./views/templates/mail"), }; // use a template file with nodemailer transporter.use("compile", hbs(handlebarOptions)); export { transporter, isMailConfigured, NODEMAILER_FROM }; |