utils/email

This commit is contained in:
lxy 2024-08-28 12:19:29 +08:00
parent ca12810f3d
commit 1c843fb1bf
3 changed files with 7 additions and 71 deletions

View File

@ -3,42 +3,10 @@ import { EntityDict } from '../../oak-app-domain';
import { BRC } from '../../types/RuntimeCxt'; import { BRC } from '../../types/RuntimeCxt';
import Email, { EmailOptions } from '../../types/Email'; import Email, { EmailOptions } from '../../types/Email';
import Nodemailer from './node-mailer';
const EmailDict: Record<string, any> = {
nodemailer: Nodemailer,
};
/**
*
* @param clazz
*/
export function registEmail<ED extends EntityDict>(clazz: new () => Email<ED>) {
const instance = new clazz();
EmailDict[instance.name] = instance;
}
export function getEmail<ED extends EntityDict>(origin: string) {
assert(EmailDict.hasOwnProperty(origin));
return EmailDict[origin] as Email<ED>;
}
export function getOrigin() {
return Object.keys(EmailDict);
}
export async function sendEmail<ED extends EntityDict>( export async function sendEmail<ED extends EntityDict>(
options: EmailOptions, options: EmailOptions,
context: BRC<ED> context: BRC<ED>
) { ) {
try { const { text, html } = options;
const instance = getEmail<ED>('nodemailer'); console.log('邮件内容:', html || text);
const result = await instance.sendEmail(options, context); }
return result;
} catch (err) {
return {
success: false,
res: err,
};
}
}

View File

@ -1,31 +0,0 @@
import { assert } from 'oak-domain/lib/utils/assert';
import { EntityDict } from '../../oak-app-domain';
import { BRC } from '../../types/RuntimeCxt';
import Email, { EmailOptions } from '../../types/Email';
const EmailDict: Record<string, any> = {};
/**
*
* @param clazz
*/
export function registEmail<ED extends EntityDict>(clazz: new () => Email<ED>) {
const instance = new clazz();
EmailDict[instance.name] = instance;
}
export function getEmail<ED extends EntityDict>(origin: string) {
assert(EmailDict.hasOwnProperty(origin));
return EmailDict[origin] as Email<ED>;
}
export function getOrigin() {
return Object.keys(EmailDict);
}
export async function sendEmail<ED extends EntityDict>(
options: EmailOptions,
context: BRC<ED>
) {
console.log('前后模式下,前端无需发送邮件')
}

View File

@ -5,7 +5,6 @@ import Email, { EmailOptions } from '../../types/Email';
import Nodemailer from './node-mailer'; import Nodemailer from './node-mailer';
// 邮箱发送先直接注入nodemailer 后面要注入自己的邮件发送逻辑再说 by wkj
const EmailDict: Record<string, any> = { const EmailDict: Record<string, any> = {
nodemailer: Nodemailer, nodemailer: Nodemailer,
}; };
@ -14,7 +13,7 @@ const EmailDict: Record<string, any> = {
* *
* @param clazz * @param clazz
*/ */
export function registEmail<ED extends EntityDict>(clazz: new () => Email<ED>) { export function registerEmail<ED extends EntityDict>(clazz: new () => Email<ED>) {
const instance = new clazz(); const instance = new clazz();
EmailDict[instance.name] = instance; EmailDict[instance.name] = instance;
} }
@ -36,10 +35,10 @@ export async function sendEmail<ED extends EntityDict>(
const instance = getEmail<ED>('nodemailer'); const instance = getEmail<ED>('nodemailer');
const result = await instance.sendEmail(options, context); const result = await instance.sendEmail(options, context);
return result; return result;
} catch (err: any) { } catch (err) {
return { return {
success: false, success: false,
error: err?.message, error: err,
}; };
} }
} }