增加对CloudMail(SkyMail)邮箱的支持

This commit is contained in:
zhangjiulong1
2026-05-07 15:27:04 +08:00
parent 7dc5cf2928
commit 0330393a19
7 changed files with 480 additions and 1 deletions
+89 -1
View File
@@ -261,6 +261,17 @@ const btnTempEmailDomainMode = document.getElementById('btn-temp-email-domain-mo
const cloudflareTempEmailSection = document.getElementById('cloudflare-temp-email-section');
const btnCloudflareTempEmailUsageGuide = document.getElementById('btn-cloudflare-temp-email-usage-guide');
const btnCloudflareTempEmailGithub = document.getElementById('btn-cloudflare-temp-email-github');
const cloudMailSection = document.getElementById('cloud-mail-section');
const rowCloudMailBaseUrl = document.getElementById('row-cloud-mail-base-url');
const rowCloudMailAdminEmail = document.getElementById('row-cloud-mail-admin-email');
const rowCloudMailAdminPassword = document.getElementById('row-cloud-mail-admin-password');
const rowCloudMailReceiveMailbox = document.getElementById('row-cloud-mail-receive-mailbox');
const rowCloudMailDomain = document.getElementById('row-cloud-mail-domain');
const inputCloudMailBaseUrl = document.getElementById('input-cloud-mail-base-url');
const inputCloudMailAdminEmail = document.getElementById('input-cloud-mail-admin-email');
const inputCloudMailAdminPassword = document.getElementById('input-cloud-mail-admin-password');
const inputCloudMailReceiveMailbox = document.getElementById('input-cloud-mail-receive-mailbox');
const inputCloudMailDomain = document.getElementById('input-cloud-mail-domain');
const hotmailSection = document.getElementById('hotmail-section');
const mail2925Section = document.getElementById('mail2925-section');
const luckmailSection = document.getElementById('luckmail-section');
@@ -2616,6 +2627,18 @@ function normalizeCloudflareTempEmailDomains(values = []) {
return domains;
}
function normalizeCloudMailBaseUrlValue(value = '') {
return normalizeCloudflareTempEmailBaseUrlValue(value);
}
function normalizeCloudMailReceiveMailboxValue(value = '') {
return normalizeCloudflareTempEmailReceiveMailboxValue(value);
}
function normalizeCloudMailDomainValue(value = '') {
return normalizeCloudflareDomainValue(value);
}
function getCloudflareDomainsFromState() {
const domains = normalizeCloudflareDomains(latestState?.cloudflareDomains || []);
const activeDomain = normalizeCloudflareDomainValue(latestState?.cloudflareDomain || '');
@@ -2692,6 +2715,24 @@ function applyCloudflareTempEmailSettingsState(state = {}) {
setCloudflareTempEmailDomainEditMode(false, { clearInput: true });
}
function applyCloudMailSettingsState(state = {}) {
if (inputCloudMailBaseUrl) {
inputCloudMailBaseUrl.value = state?.cloudMailBaseUrl || '';
}
if (inputCloudMailAdminEmail) {
inputCloudMailAdminEmail.value = state?.cloudMailAdminEmail || '';
}
if (inputCloudMailAdminPassword) {
inputCloudMailAdminPassword.value = state?.cloudMailAdminPassword || '';
}
if (inputCloudMailReceiveMailbox) {
inputCloudMailReceiveMailbox.value = state?.cloudMailReceiveMailbox || '';
}
if (inputCloudMailDomain) {
inputCloudMailDomain.value = state?.cloudMailDomain || '';
}
}
function collectSettingsPayload() {
const defaultGpcHelperApiUrl = typeof DEFAULT_GPC_HELPER_API_URL !== 'undefined'
? DEFAULT_GPC_HELPER_API_URL
@@ -3355,6 +3396,11 @@ function collectSettingsPayload() {
cloudflareTempEmailUseRandomSubdomain: Boolean(inputTempEmailUseRandomSubdomain?.checked),
cloudflareTempEmailDomain: selectedCloudflareTempEmailDomain,
cloudflareTempEmailDomains: tempEmailDomains,
cloudMailBaseUrl: normalizeCloudflareTempEmailBaseUrlValue((typeof inputCloudMailBaseUrl !== 'undefined' && inputCloudMailBaseUrl) ? inputCloudMailBaseUrl.value : ''),
cloudMailAdminEmail: ((typeof inputCloudMailAdminEmail !== 'undefined' && inputCloudMailAdminEmail) ? inputCloudMailAdminEmail.value : '').trim(),
cloudMailAdminPassword: (typeof inputCloudMailAdminPassword !== 'undefined' && inputCloudMailAdminPassword) ? inputCloudMailAdminPassword.value : '',
cloudMailReceiveMailbox: normalizeCloudflareTempEmailReceiveMailboxValue((typeof inputCloudMailReceiveMailbox !== 'undefined' && inputCloudMailReceiveMailbox) ? inputCloudMailReceiveMailbox.value : ''),
cloudMailDomain: normalizeCloudflareTempEmailDomainValue((typeof inputCloudMailDomain !== 'undefined' && inputCloudMailDomain) ? inputCloudMailDomain.value : ''),
autoRunSkipFailures: inputAutoSkipFailures.checked,
autoRunFallbackThreadIntervalMinutes: normalizeAutoRunThreadIntervalMinutes(inputAutoSkipFailuresThreadIntervalMinutes.value),
autoRunDelayEnabled: inputAutoDelayEnabled.checked,
@@ -8086,7 +8132,7 @@ function applySettingsState(state) {
inputCodex2ApiUrl.value = state?.codex2apiUrl || '';
inputCodex2ApiAdminKey.value = state?.codex2apiAdminKey || '';
const restoredMailProvider = isCustomMailProvider(state?.mailProvider)
|| [ICLOUD_PROVIDER, 'hotmail-api', GMAIL_PROVIDER, 'luckmail-api', '163', '163-vip', '126', 'qq', 'inbucket', '2925', 'cloudflare-temp-email'].includes(String(state?.mailProvider || '').trim())
|| [ICLOUD_PROVIDER, 'hotmail-api', GMAIL_PROVIDER, 'luckmail-api', '163', '163-vip', '126', 'qq', 'inbucket', '2925', 'cloudflare-temp-email', 'cloudmail'].includes(String(state?.mailProvider || '').trim())
? String(state?.mailProvider || '163').trim()
: (String(state?.emailGenerator || '').trim().toLowerCase() === 'custom'
|| String(state?.emailGenerator || '').trim().toLowerCase() === 'manual'
@@ -8108,6 +8154,8 @@ function applySettingsState(state) {
selectEmailGenerator.value = 'cloudflare';
} else if (restoredEmailGenerator === 'cloudflare-temp-email') {
selectEmailGenerator.value = 'cloudflare-temp-email';
} else if (restoredEmailGenerator === 'cloudmail') {
selectEmailGenerator.value = 'cloudmail';
} else {
selectEmailGenerator.value = 'duck';
}
@@ -8163,6 +8211,9 @@ function applySettingsState(state) {
selectLuckmailEmailType.value = normalizeLuckmailEmailType(state?.luckmailEmailType);
inputLuckmailDomain.value = state?.luckmailDomain || '';
applyCloudflareTempEmailSettingsState(state);
if (typeof applyCloudMailSettingsState === 'function') {
applyCloudMailSettingsState(state);
}
renderCloudflareDomainOptions(state?.cloudflareDomain || '');
setCloudflareDomainEditMode(false, { clearInput: true });
inputAutoSkipFailures.checked = Boolean(state?.autoRunSkipFailures);
@@ -8906,6 +8957,7 @@ function getSelectedEmailGenerator() {
}
if (generator === 'cloudflare') return 'cloudflare';
if (generator === 'cloudflare-temp-email') return 'cloudflare-temp-email';
if (generator === 'cloudmail') return 'cloudmail';
return 'duck';
}
@@ -8953,6 +9005,14 @@ function getEmailGeneratorUiCopy() {
label: 'Cloudflare Temp Email',
};
}
if (getSelectedEmailGenerator() === 'cloudmail') {
return {
buttonLabel: '生成',
placeholder: '点击生成 Cloud Mail 邮箱,或手动粘贴邮箱',
successVerb: '生成',
label: 'Cloud Mail',
};
}
return {
buttonLabel: '获取',
@@ -9352,6 +9412,7 @@ function updateMailProviderUI() {
const useIcloudProvider = isIcloudMailProvider();
const useEmailGenerator = !useHotmail && !useLuckmail && !useCustomEmail && (!useGeneratedAlias || useGmail);
const useCloudflareTempEmailProvider = selectMailProvider.value === 'cloudflare-temp-email';
const useCloudMailProvider = selectMailProvider.value === 'cloudmail';
const aliasUiCopy = useGeneratedAlias
? getManagedAliasProviderUiCopy(selectMailProvider.value, mail2925Mode)
: null;
@@ -9374,9 +9435,13 @@ function updateMailProviderUI() {
const useCloudflare = selectedGenerator === 'cloudflare';
const useIcloud = selectedGenerator === 'icloud';
const useCloudflareTempEmailGenerator = selectedGenerator === 'cloudflare-temp-email';
const useCloudMailGenerator = selectedGenerator === 'cloudmail';
const showCloudflareDomain = useEmailGenerator && useCloudflare;
const showCloudflareTempEmailSettings = useCloudflareTempEmailProvider || (useEmailGenerator && useCloudflareTempEmailGenerator);
const showCloudflareTempEmailReceiveMailbox = useCloudflareTempEmailProvider && !useCloudflareTempEmailGenerator;
const showCloudMailSettings = useCloudMailProvider || (useEmailGenerator && useCloudMailGenerator);
const showCloudMailReceiveMailbox = useCloudMailProvider && !useCloudMailGenerator;
const showCloudMailDomain = useEmailGenerator && useCloudMailGenerator;
const selectedIcloudHost = typeof getSelectedIcloudHostPreference === 'function'
? getSelectedIcloudHostPreference()
: (normalizeIcloudHostValue(icloudHostPreferenceValue || latestState?.icloudHostPreference || '')
@@ -9402,6 +9467,14 @@ function updateMailProviderUI() {
if (cloudflareTempEmailSection) {
cloudflareTempEmailSection.style.display = showCloudflareTempEmailSettings ? '' : 'none';
}
if (typeof cloudMailSection !== 'undefined' && cloudMailSection) {
cloudMailSection.style.display = showCloudMailSettings ? '' : 'none';
}
if (typeof rowCloudMailBaseUrl !== 'undefined' && rowCloudMailBaseUrl) rowCloudMailBaseUrl.style.display = showCloudMailSettings ? '' : 'none';
if (typeof rowCloudMailAdminEmail !== 'undefined' && rowCloudMailAdminEmail) rowCloudMailAdminEmail.style.display = showCloudMailSettings ? '' : 'none';
if (typeof rowCloudMailAdminPassword !== 'undefined' && rowCloudMailAdminPassword) rowCloudMailAdminPassword.style.display = showCloudMailSettings ? '' : 'none';
if (typeof rowCloudMailReceiveMailbox !== 'undefined' && rowCloudMailReceiveMailbox) rowCloudMailReceiveMailbox.style.display = showCloudMailReceiveMailbox ? '' : 'none';
if (typeof rowCloudMailDomain !== 'undefined' && rowCloudMailDomain) rowCloudMailDomain.style.display = showCloudMailDomain ? '' : 'none';
if (icloudSection) {
const showIcloudSection = (useEmailGenerator && useIcloud) || useIcloudProvider;
icloudSection.style.display = showIcloudSection ? '' : 'none';
@@ -13272,6 +13345,21 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
) {
updateMailProviderUI();
}
if (message.payload.cloudMailBaseUrl !== undefined && inputCloudMailBaseUrl) {
inputCloudMailBaseUrl.value = message.payload.cloudMailBaseUrl || '';
}
if (message.payload.cloudMailAdminEmail !== undefined && inputCloudMailAdminEmail) {
inputCloudMailAdminEmail.value = message.payload.cloudMailAdminEmail || '';
}
if (message.payload.cloudMailAdminPassword !== undefined && inputCloudMailAdminPassword) {
inputCloudMailAdminPassword.value = message.payload.cloudMailAdminPassword || '';
}
if (message.payload.cloudMailReceiveMailbox !== undefined && inputCloudMailReceiveMailbox) {
inputCloudMailReceiveMailbox.value = message.payload.cloudMailReceiveMailbox || '';
}
if (message.payload.cloudMailDomain !== undefined && inputCloudMailDomain) {
inputCloudMailDomain.value = message.payload.cloudMailDomain || '';
}
if (message.payload.plusModeEnabled !== undefined && inputPlusModeEnabled) {
inputPlusModeEnabled.checked = Boolean(message.payload.plusModeEnabled);
}