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 | 4x 4x 4x 2x 2x 2x 2x 2x 2x 1x 1x 1x 2x 4x | import { MailTemplates } from "@app/types/mailTemplates";
import {
NODEMAILER_FROM,
isMailConfigured,
transporter,
} from "@app/config/mailer.setup";
import { NODE_ENV } from "@app/constants";
// -------------------Utility Function--------------------------
type Props<T extends keyof MailTemplates> = {
// Receiver mail id
to: string;
// Template name which will be used
template: T;
// Data which is required by template
context: MailTemplates[T];
};
/**
* Send mail
* @param props
* @returns
*/
const sendMail = async <T extends keyof MailTemplates>(props: Props<T>) => {
const { to, template, context } = props;
const mailOption = {
from: NODEMAILER_FROM,
to,
subject: context.subject,
template,
context,
};
let data = null;
Iif (["local", "staging"].includes(NODE_ENV)) {
console.log("Sending mail", { mailOption });
}
try {
if (!isMailConfigured) {
throw new Error("Mail is not configured");
}
data = await transporter.sendMail(mailOption);
} catch (error) {
console.error("error while sending mail", { error });
}
return data;
};
export { sendMail };
|