feat: support icloud forward mailbox provider config
This commit is contained in:
@@ -279,6 +279,8 @@ const PERSISTED_SETTING_DEFAULTS = {
|
||||
customEmailPool: [],
|
||||
autoDeleteUsedIcloudAlias: false,
|
||||
icloudHostPreference: 'auto',
|
||||
icloudTargetMailboxType: 'icloud-inbox',
|
||||
icloudForwardMailProvider: 'qq',
|
||||
icloudFetchMode: 'reuse_existing',
|
||||
accountRunHistoryTextEnabled: true,
|
||||
accountRunHistoryHelperBaseUrl: DEFAULT_ACCOUNT_RUN_HISTORY_HELPER_BASE_URL,
|
||||
@@ -692,6 +694,19 @@ function normalizeIcloudFetchMode(value = '') {
|
||||
return normalized === 'always_new' ? 'always_new' : 'reuse_existing';
|
||||
}
|
||||
|
||||
function normalizeIcloudTargetMailboxType(value = '') {
|
||||
return String(value || '').trim().toLowerCase() === 'forward-mailbox'
|
||||
? 'forward-mailbox'
|
||||
: 'icloud-inbox';
|
||||
}
|
||||
|
||||
function normalizeIcloudForwardMailProvider(value = '') {
|
||||
const normalized = String(value || '').trim().toLowerCase();
|
||||
return ['qq', '163', '163-vip', '126', 'gmail'].includes(normalized)
|
||||
? normalized
|
||||
: 'qq';
|
||||
}
|
||||
|
||||
function normalizeCustomEmailPool(value = []) {
|
||||
const source = Array.isArray(value)
|
||||
? value
|
||||
@@ -1002,6 +1017,10 @@ function normalizePersistentSettingValue(key, value) {
|
||||
return Boolean(value);
|
||||
case 'icloudHostPreference':
|
||||
return normalizeIcloudHost(value) || 'auto';
|
||||
case 'icloudTargetMailboxType':
|
||||
return normalizeIcloudTargetMailboxType(value);
|
||||
case 'icloudForwardMailProvider':
|
||||
return normalizeIcloudForwardMailProvider(value);
|
||||
case 'icloudFetchMode':
|
||||
return normalizeIcloudFetchMode(value);
|
||||
case 'accountRunHistoryHelperBaseUrl':
|
||||
@@ -6875,6 +6894,29 @@ async function executeStep3(state) {
|
||||
// Step 4: Get Signup Verification Code (qq-mail.js polls, then fills in signup-page.js)
|
||||
// ============================================================
|
||||
|
||||
function getIcloudForwardMailConfig(state = {}, provider = 'qq') {
|
||||
const normalizedProvider = normalizeIcloudForwardMailProvider(provider);
|
||||
if (normalizedProvider === GMAIL_PROVIDER) {
|
||||
return {
|
||||
source: 'gmail-mail',
|
||||
url: 'https://mail.google.com/mail/u/0/#inbox',
|
||||
label: 'Gmail 邮箱',
|
||||
inject: ['content/activation-utils.js', 'content/utils.js', 'content/gmail-mail.js'],
|
||||
injectSource: 'gmail-mail',
|
||||
};
|
||||
}
|
||||
if (normalizedProvider === '163') {
|
||||
return { source: 'mail-163', url: 'https://mail.163.com/js6/main.jsp?df=mail163_letter#module=mbox.ListModule%7C%7B%22fid%22%3A1%2C%22order%22%3A%22date%22%2C%22desc%22%3Atrue%7D', label: '163 邮箱' };
|
||||
}
|
||||
if (normalizedProvider === '163-vip') {
|
||||
return { source: 'mail-163', url: 'https://webmail.vip.163.com/js6/main.jsp?df=mail163_letter#module=mbox.ListModule%7C%7B%22fid%22%3A1%2C%22order%22%3A%22date%22%2C%22desc%22%3Atrue%7D', label: '163 VIP 邮箱' };
|
||||
}
|
||||
if (normalizedProvider === '126') {
|
||||
return { source: 'mail-163', url: 'https://mail.126.com/js6/main.jsp?df=mail163_letter#module=mbox.ListModule%7C%7B%22fid%22%3A1%2C%22order%22%3A%22date%22%2C%22desc%22%3Atrue%7D', label: '126 邮箱' };
|
||||
}
|
||||
return { source: 'qq-mail', url: 'https://wx.mail.qq.com/', label: 'QQ 邮箱' };
|
||||
}
|
||||
|
||||
function getMailConfig(state) {
|
||||
const provider = state.mailProvider || 'qq';
|
||||
if (provider === 'custom') {
|
||||
@@ -6887,6 +6929,17 @@ function getMailConfig(state) {
|
||||
const configuredHost = getConfiguredIcloudHostPreference(state)
|
||||
|| normalizeIcloudHost(state?.preferredIcloudHost)
|
||||
|| 'icloud.com';
|
||||
const targetMailboxType = normalizeIcloudTargetMailboxType(state?.icloudTargetMailboxType);
|
||||
const useForwardMailbox = targetMailboxType === 'forward-mailbox';
|
||||
if (useForwardMailbox) {
|
||||
const forwardProvider = normalizeIcloudForwardMailProvider(state?.icloudForwardMailProvider);
|
||||
const forwardConfig = getIcloudForwardMailConfig(state, forwardProvider);
|
||||
return {
|
||||
...forwardConfig,
|
||||
label: `iCloud 转发(${forwardConfig.label})`,
|
||||
icloudForwarding: true,
|
||||
};
|
||||
}
|
||||
const loginUrl = getIcloudLoginUrlForHost(configuredHost) || 'https://www.icloud.com/';
|
||||
const mailUrl = getIcloudMailUrlForHost(configuredHost) || loginUrl;
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user