oak-general-business/es/utils/email/index.js

34 lines
830 B
JavaScript

import { assert } from 'oak-domain/lib/utils/assert';
import Nodemailer from './node-mailer';
const EmailDict = {
nodemailer: new Nodemailer(),
};
/**
* 注入一个其它发送邮件类
* @param clazz
*/
export function registerEmail(clazz) {
const instance = new clazz();
EmailDict[instance.name] = instance;
}
export function getEmail(origin) {
assert(EmailDict.hasOwnProperty(origin));
return EmailDict[origin];
}
export function getOrigin() {
return Object.keys(EmailDict);
}
export 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?.message,
};
}
}