Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
* text=auto eol=lf
*.bat text eol=crlf
3 changes: 2 additions & 1 deletion .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Docker Image CI
on:
push:
branches: [ "master", "main" ]
workflow_dispatch:
# 当发布新版本时触发
tags: [ 'v*.*.*' ]
pull_request:
Expand Down Expand Up @@ -65,4 +66,4 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
cache-to: type=gha,mode=max
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ fastapi>=0.100.0
uvicorn[standard]>=0.23.0
jinja2>=3.1.0
python-multipart>=0.0.6
requests>=2.32.5
sqlalchemy>=2.0.0
aiosqlite>=0.19.0
psycopg[binary]>=3.1.18
Expand Down
9 changes: 9 additions & 0 deletions src/config/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class EmailServiceType(str, Enum):
DUCK_MAIL = "duck_mail"
FREEMAIL = "freemail"
IMAP_MAIL = "imap_mail"
CLOUD_MAIL = "cloud_mail"


# ============================================================================
Expand Down Expand Up @@ -140,6 +141,14 @@ class EmailServiceType(str, Enum):
"password": "",
"timeout": 30,
"max_retries": 3,
},
"cloud_mail": {
"base_url": "",
"admin_email": "",
"admin_password": "",
"domain": "",
"timeout": 30,
"max_retries": 3,
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ class SettingDefinition:
# 验证码配置
"email_code_timeout": SettingDefinition(
db_key="email_code.timeout",
default_value=120,
default_value=30,
category=SettingCategory.EMAIL,
description="验证码等待超时时间(秒)"
),
Expand Down Expand Up @@ -690,7 +690,7 @@ def proxy_url(self) -> Optional[str]:
cpa_api_token: SecretStr = SecretStr("")

# 验证码配置
email_code_timeout: int = 120
email_code_timeout: int = 30
email_code_poll_interval: int = 3

# Outlook 配置
Expand Down
2 changes: 1 addition & 1 deletion src/core/register.py
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ def _get_verification_code(self) -> Optional[str]:
code = self.email_service.get_verification_code(
email=self.email,
email_id=email_id,
timeout=120,
timeout=30,
pattern=OTP_CODE_PATTERN,
otp_sent_at=self._otp_sent_at,
)
Expand Down
3 changes: 3 additions & 0 deletions src/services/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .duck_mail import DuckMailService
from .freemail import FreemailService
from .imap_mail import ImapMailService
from .cloud_mail import CloudMailService

# 注册服务
EmailServiceFactory.register(EmailServiceType.TEMPMAIL, TempmailService)
Expand All @@ -26,6 +27,7 @@
EmailServiceFactory.register(EmailServiceType.DUCK_MAIL, DuckMailService)
EmailServiceFactory.register(EmailServiceType.FREEMAIL, FreemailService)
EmailServiceFactory.register(EmailServiceType.IMAP_MAIL, ImapMailService)
EmailServiceFactory.register(EmailServiceType.CLOUD_MAIL, CloudMailService)

# 导出 Outlook 模块的额外内容
from .outlook.base import (
Expand Down Expand Up @@ -59,6 +61,7 @@
'DuckMailService',
'FreemailService',
'ImapMailService',
'CloudMailService',
# Outlook 模块
'ProviderType',
'EmailMessage',
Expand Down
Loading