UNPKG

get-express-starter

Version:

Get production ready express boilerplate with a single command

47 lines (40 loc) 1.52 kB
import { env } from '@/config'; import { logger } from '@/config/logger'; import { PASSWORD_RESET_REQUEST, PASSWORD_RESET_SUCCESS, VERIFICATION_EMAIL } from '@/utils/emailTemplates'; import nodemailer from 'nodemailer'; const transport = nodemailer.createTransport(env.email.smtp); if (env.mode !== 'test') { transport .verify() .then(() => logger.info('Connected to email server')) .catch(() => logger.warn('Unable to connect to email server. Make sure you have configured the SMTP options in .env'), ); } const sendEmail = async (to: string, subject: string, html: string) => { const msg = { from: env.email.from, to, subject, html }; await transport.sendMail(msg); }; const sendResetPasswordEmail = async (to: string, token: string) => { const subject = 'Reset password'; const resetPasswordUrl = `${env.frontend.url}/reset-password?token=${token}`; const html = PASSWORD_RESET_REQUEST(resetPasswordUrl); await sendEmail(to, subject, html); }; const sendPasswordRestSuccessEmail = async (to: string) => { const subject = 'Password reset successful'; const html = PASSWORD_RESET_SUCCESS; await sendEmail(to, subject, html); }; const sendVerificationEmail = async (to: string, verifyEmailToken: string) => { const subject = 'Email Verification'; const html = VERIFICATION_EMAIL(verifyEmailToken); await sendEmail(to, subject, html); }; export default { transport, sendEmail, sendResetPasswordEmail, sendVerificationEmail, sendPasswordRestSuccessEmail, };