fix cfte lookup mode when generating cfte mailboxes
This commit is contained in:
+34
-13
@@ -2935,6 +2935,20 @@ function normalizeCloudflareTempEmailReceiveMailbox(value = '') {
|
||||
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(normalized) ? normalized : '';
|
||||
}
|
||||
|
||||
function resolveCloudflareTempEmailEffectiveLookupMode(state = {}, lookupMode = '', originalRecipient = '') {
|
||||
const mailProvider = String(state?.mailProvider || '').trim().toLowerCase();
|
||||
const emailGenerator = String(state?.emailGenerator || '').trim().toLowerCase();
|
||||
const normalizedLookupMode = normalizeCloudflareTempEmailLookupMode(lookupMode);
|
||||
const normalizedOriginalRecipient = normalizeCloudflareTempEmailReceiveMailbox(originalRecipient);
|
||||
const canUseRegistrationLookup = mailProvider === CLOUDFLARE_TEMP_EMAIL_PROVIDER
|
||||
&& emailGenerator !== CLOUDFLARE_TEMP_EMAIL_GENERATOR
|
||||
&& normalizedLookupMode === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL
|
||||
&& Boolean(normalizedOriginalRecipient);
|
||||
return canUseRegistrationLookup
|
||||
? CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL
|
||||
: CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_RECEIVE_MAILBOX;
|
||||
}
|
||||
|
||||
function resolveCloudflareTempEmailPollTargetEmail(state = {}, pollPayload = {}, config = getCloudflareTempEmailConfig(state)) {
|
||||
const configuredReceiveMailbox = normalizeCloudflareTempEmailReceiveMailbox(config.receiveMailbox);
|
||||
const mailProvider = String(state?.mailProvider || '').trim().toLowerCase();
|
||||
@@ -2942,11 +2956,14 @@ function resolveCloudflareTempEmailPollTargetEmail(state = {}, pollPayload = {},
|
||||
const shouldPreferConfiguredReceiveMailbox = mailProvider === 'cloudflare-temp-email'
|
||||
&& emailGenerator !== 'cloudflare-temp-email';
|
||||
const requestedTarget = normalizeCloudflareTempEmailReceiveMailbox(pollPayload.targetEmail);
|
||||
if (
|
||||
shouldPreferConfiguredReceiveMailbox
|
||||
&& normalizeCloudflareTempEmailLookupMode(config.lookupMode) === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL
|
||||
) {
|
||||
return requestedTarget || normalizeCloudflareTempEmailReceiveMailbox(state.email);
|
||||
const registrationEmail = normalizeCloudflareTempEmailReceiveMailbox(state.email);
|
||||
const effectiveLookupMode = resolveCloudflareTempEmailEffectiveLookupMode(
|
||||
state,
|
||||
config.lookupMode,
|
||||
requestedTarget || registrationEmail
|
||||
);
|
||||
if (effectiveLookupMode === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL) {
|
||||
return requestedTarget || registrationEmail;
|
||||
}
|
||||
|
||||
if (shouldPreferConfiguredReceiveMailbox && configuredReceiveMailbox) {
|
||||
@@ -2957,7 +2974,7 @@ function resolveCloudflareTempEmailPollTargetEmail(state = {}, pollPayload = {},
|
||||
return requestedTarget;
|
||||
}
|
||||
|
||||
return normalizeCloudflareTempEmailReceiveMailbox(state.email);
|
||||
return registrationEmail;
|
||||
}
|
||||
|
||||
const cloudMailProvider = self.MultiPageBackgroundCloudMailProvider.createCloudMailProvider({
|
||||
@@ -6885,8 +6902,12 @@ async function deleteCloudflareTempEmailMail(config, mailId) {
|
||||
async function listCloudflareTempEmailMessages(state, options = {}) {
|
||||
const config = ensureCloudflareTempEmailConfig(state, { requireAdminAuth: true });
|
||||
const address = normalizeCloudflareTempEmailAddress(options.address);
|
||||
const lookupMode = normalizeCloudflareTempEmailLookupMode(options.lookupMode || config.lookupMode);
|
||||
const originalRecipient = normalizeCloudflareTempEmailReceiveMailbox(options.originalRecipient);
|
||||
const lookupMode = resolveCloudflareTempEmailEffectiveLookupMode(
|
||||
state,
|
||||
options.lookupMode || config.lookupMode,
|
||||
originalRecipient
|
||||
);
|
||||
const useRegistrationLookup = lookupMode === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL
|
||||
&& Boolean(originalRecipient);
|
||||
const queryAddress = useRegistrationLookup ? '' : address;
|
||||
@@ -6922,15 +6943,15 @@ async function pollCloudflareTempEmailVerificationCode(step, state, pollPayload
|
||||
const config = ensureCloudflareTempEmailConfig(state, { requireAdminAuth: true });
|
||||
const targetEmail = resolveCloudflareTempEmailPollTargetEmail(state, pollPayload, config);
|
||||
const registrationEmail = normalizeCloudflareTempEmailReceiveMailbox(state.email);
|
||||
const lookupMode = normalizeCloudflareTempEmailLookupMode(config.lookupMode);
|
||||
const mailProvider = String(state?.mailProvider || '').trim().toLowerCase();
|
||||
const emailGenerator = String(state?.emailGenerator || '').trim().toLowerCase();
|
||||
const useRegistrationLookup = mailProvider === 'cloudflare-temp-email'
|
||||
&& emailGenerator !== 'cloudflare-temp-email'
|
||||
&& lookupMode === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL;
|
||||
const originalRecipient = normalizeCloudflareTempEmailReceiveMailbox(pollPayload.targetEmail)
|
||||
|| registrationEmail
|
||||
|| targetEmail;
|
||||
const lookupMode = resolveCloudflareTempEmailEffectiveLookupMode(
|
||||
state,
|
||||
config.lookupMode,
|
||||
originalRecipient
|
||||
);
|
||||
const useRegistrationLookup = lookupMode === CLOUDFLARE_TEMP_EMAIL_LOOKUP_MODE_REGISTRATION_EMAIL;
|
||||
if (!targetEmail) {
|
||||
throw new Error('Cloudflare Temp Email 轮询前缺少目标邮箱地址,请先填写注册邮箱或“邮件接收”邮箱。');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user