fix: normalize domain casing

Fix domain casing normalization for configured domains and inbound recipient domains.
This commit is contained in:
Hging
2026-05-16 18:35:39 +08:00
committed by GitHub
parent 8324b133fb
commit add0124cfd
26 changed files with 641 additions and 86 deletions
+5 -5
View File
@@ -6,7 +6,7 @@ import { WorkerMailer, WorkerMailerOptions } from 'worker-mailer';
import i18n from '../i18n';
import { CONSTANTS } from '../constants'
import { getJsonSetting, getDomains, getBooleanValue, getJsonObjectValue } from '../utils';
import { getJsonSetting, getDomains, getBooleanValue, getJsonObjectValue, getDomainMapValue, getMailDomain, includesDomain } from '../utils';
import { GeoData } from '../models'
import { handleListQuery, isSendMailBindingEnabled, updateAddressUpdatedAt } from '../common'
import { getSendBalanceState, requestSendMailAccess } from './send_balance';
@@ -81,7 +81,7 @@ const sendMailByResend = async (
subject: string, content: string, is_html: boolean
}
): Promise<void> => {
const mailDomain = address.split("@")[1];
const mailDomain = getMailDomain(address);
const token = c.env[
`RESEND_TOKEN_${mailDomain.replace(/\./g, "_").toUpperCase()}`
] || c.env.RESEND_TOKEN;
@@ -143,9 +143,9 @@ export const sendMail = async (
throw new Error(msgs.AddressNotFoundMsg)
}
// check domain
const mailDomain = address.split("@")[1];
const mailDomain = getMailDomain(address);
const domains = getDomains(c);
if (!domains.includes(mailDomain)) {
if (!includesDomain(domains, mailDomain)) {
throw new Error(msgs.InvalidDomainMsg)
}
const sendBalanceState = await getSendBalanceState(c, address, {
@@ -182,7 +182,7 @@ export const sendMail = async (
];
// send by smtp
const smtpConfigMap = getJsonObjectValue<Record<string, WorkerMailerOptions>>(c.env.SMTP_CONFIG);
const smtpConfig = smtpConfigMap ? smtpConfigMap[mailDomain] : null;
const smtpConfig = getDomainMapValue(smtpConfigMap, mailDomain);
// send by verified address list
let sendByVerifiedAddressList = false;
if (c.env.SEND_MAIL) {