import { Transporter, createTransport, TransportOptions } from "nodemailer"; export default class MailHelper { private readonly transporter: Transporter; constructor() { this.transporter = createTransport({ host: process.env.MAIL_HOST, port: Number(process.env.MAIL_PORT), secure: (process.env.MAIL_SECURE as "true" | "false") == "true", auth: { user: process.env.MAIL_USERNAME, pass: process.env.MAIL_PASSWORD, }, } as TransportOptions); } /** * @description send mail * @param {string} target * @param {string} subject * @param {string} content * @returns {Prmose<*>} */ async sendMail(target: string, subject: string, content: string): Promise { return new Promise((resolve, reject) => { this.transporter .sendMail({ from: `"${process.env.CLUB_NAME}" <${process.env.MAIL_USERNAME}>`, to: target, subject, text: content, }) .then((info) => resolve(info.messageId)) .catch((e) => reject(e)); }); } }