pos-be/src/modules/configuration/mail/domain/helpers/send-email.helper.ts

55 lines
1.6 KiB
TypeScript

import * as nodemailer from 'nodemailer';
import * as handlebars from 'handlebars';
import * as path from 'path';
import * as fs from 'fs';
import { TransactionPaymentType } from 'src/modules/transaction/transaction/constants';
export async function sendEmail(receivers, subject) {
const smtpTransport = nodemailer.createTransport({
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_POST,
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_TOKEN,
},
});
let templateName = 'payment-confirmation-bank';
for (const receiver of receivers) {
try {
if (receiver.payment_type == TransactionPaymentType.MIDTRANS)
templateName = 'payment-confirmation-midtrans';
let templatePath = path.resolve(
__dirname,
`../email-template/${ templateName }.html`,
);
templatePath = templatePath.replace(/dist/g, 'src');
const templateSource = fs.readFileSync(templatePath, 'utf8');
const template = handlebars.compile(templateSource);
const htmlToSend = template(receiver);
const emailContext = {
from: 'no-reply@eigen.co.id',
to: receiver.email,
subject: subject,
html: htmlToSend,
attachDataUrls: true,
};
await new Promise((f) => setTimeout(f, 2000));
smtpTransport.sendMail(emailContext, function (err, data) {
if (err) {
console.log(err, `Error occurs on send to ${ receiver.email }`);
} else {
console.log(`Email sent to ${ receiver.email }`);
}
});
} catch (error) {
console.log(error, `Error occurs on send to ${ receiver.email }`)
}
}
}