"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerEmail = registerEmail; exports.getEmail = getEmail; exports.getOrigin = getOrigin; exports.sendEmail = sendEmail; const tslib_1 = require("tslib"); const assert_1 = require("oak-domain/lib/utils/assert"); const node_mailer_1 = tslib_1.__importDefault(require("./node-mailer")); const EmailDict = { nodemailer: new node_mailer_1.default(), }; /** * 注入一个其它发送邮件类 * @param clazz */ function registerEmail(clazz) { const instance = new clazz(); EmailDict[instance.name] = instance; } function getEmail(origin) { (0, assert_1.assert)(EmailDict.hasOwnProperty(origin)); return EmailDict[origin]; } function getOrigin() { return Object.keys(EmailDict); } async function sendEmail(options, context) { try { const instance = getEmail('nodemailer'); const result = await instance.sendEmail(options, context); return result; } catch (err) { return { success: false, error: err, }; } }