34 lines
830 B
JavaScript
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,
|
|
};
|
|
}
|
|
}
|