优化站内发件无需第三方

This commit is contained in:
eoao
2026-02-07 20:02:01 +08:00
parent 3ea917a572
commit 5da6b44ad6
12 changed files with 238 additions and 193 deletions

View File

@@ -5,10 +5,9 @@ import settingService from '../service/setting-service';
import attService from '../service/att-service';
import constant from '../const/constant';
import fileUtils from '../utils/file-utils';
import { emailConst, isDel, roleConst, settingConst } from '../const/entity-const';
import { emailConst, isDel, settingConst } from '../const/entity-const';
import emailUtils from '../utils/email-utils';
import roleService from '../service/role-service';
import verifyUtils from '../utils/verify-utils';
import userService from '../service/user-service';
import telegramService from '../service/telegram-service';
@@ -60,45 +59,16 @@ export async function email(message, env, ctx) {
if (account && userRow.email !== env.admin) {
let { banEmail, banEmailType, availDomain } = await roleService.selectByUserId({ env: env }, account.userId);
let { banEmail, availDomain } = await roleService.selectByUserId({ env: env }, account.userId);
if (!roleService.hasAvailDomainPerm(availDomain, message.to)) {
message.setReject('Mailbox disabled');
message.setReject('The recipient is not authorized to use this domain.');
return;
}
banEmail = banEmail.split(',').filter(item => item !== '');
if (banEmail.includes('*')) {
if (!banEmailHandler(banEmailType, message, email)) return;
}
for (const item of banEmail) {
if (verifyUtils.isDomain(item)) {
const banDomain = item.toLowerCase();
const receiveDomain = emailUtils.getDomain(email.from.address.toLowerCase());
if (banDomain === receiveDomain) {
if (!banEmailHandler(banEmailType, message, email)) return;
}
} else {
if (item.toLowerCase() === email.from.address.toLowerCase()) {
if (!banEmailHandler(banEmailType, message, email)) return;
}
}
if(roleService.isBanEmail(banEmail, email.from.address)) {
message.setReject('The recipient is disabled from receiving emails.');
return;
}
}
@@ -199,20 +169,3 @@ export async function email(message, env, ctx) {
throw e
}
}
function banEmailHandler(banEmailType, message, email) {
if (banEmailType === roleConst.banEmailType.ALL) {
message.setReject('Mailbox disabled');
return false;
}
if (banEmailType === roleConst.banEmailType.CONTENT) {
email.html = 'The content has been deleted';
email.text = 'The content has been deleted';
email.attachments = [];
}
return true;
}