Advertisement
Guest User

Untitled

a guest
Jun 12th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fs = require("fs");
  2. const path = require("path");
  3. const dotize = require("dotize");
  4.  
  5. const initializeMailer = () => {
  6.   if (process.env.MAIL_TYPE === "ses") {
  7.     return require("ses-email-sender")({
  8.       AWSAccessKeyID: process.env.AWS_AID,
  9.       AWSSecretKey: process.env.AWS_SECRET,
  10.       ServiceUrl: process.env.AWS_URL,
  11.       port: process.env.AWS_SES_PORT,
  12.     });
  13.   }
  14.  
  15.   return require("smtp-email-sender")({
  16.     host: process.env.MAIL_HOST,
  17.     port: process.env.MAIL_PORT,
  18.     auth: {
  19.       user: process.env.MAIL_USER,
  20.       pass: process.env.MAIL_PASS,
  21.     },
  22.   });
  23. };
  24.  
  25. const generateHtml = (template, object) => {
  26.   object = dotize.convert(object);
  27.   const generator = Object.keys(object).map(async key => {
  28.     template = String(template).replace(
  29.       new RegExp(`\\{${key}\\}`, "g"),
  30.       object[key],
  31.     );
  32.   });
  33.  
  34.   return Promise.all(generator)
  35.     .then(() => template)
  36.     .catch(console.error);
  37. };
  38.  
  39. module.exports = async (to, subject, template, object) => {
  40.   const mailer = initializeMailer();
  41.  
  42.   mailer({
  43.     from: ".....",
  44.     to,
  45.     subject,
  46.     html: await generateHtml(
  47.       fs.readFileSync(
  48.         path.resolve(`${__dirname}/../emails`, `${template}.html`),
  49.         "utf8",
  50.       ),
  51.       object,
  52.     ),
  53.   });
  54. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement