Revert "Merge branch 'e-0154' into deploy/dev"
This reverts commit aca0f870722a13c99ec8b7db76d704fe72d9b24f, reversing changes made to 1dc90ee15783c9b2f536db73eb4db79ed23d0436.
This commit is contained in:
parent
aca0f87072
commit
c13647fc83
@ -43,17 +43,6 @@ def only_edition_cloud(view):
|
|||||||
return decorated
|
return decorated
|
||||||
|
|
||||||
|
|
||||||
def only_enterprise_edition(view):
|
|
||||||
@wraps(view)
|
|
||||||
def decorated(*args, **kwargs):
|
|
||||||
if not dify_config.ENTERPRISE_ENABLED:
|
|
||||||
abort(404)
|
|
||||||
|
|
||||||
return view(*args, **kwargs)
|
|
||||||
|
|
||||||
return decorated
|
|
||||||
|
|
||||||
|
|
||||||
def only_edition_self_hosted(view):
|
def only_edition_self_hosted(view):
|
||||||
@wraps(view)
|
@wraps(view)
|
||||||
def decorated(*args, **kwargs):
|
def decorated(*args, **kwargs):
|
||||||
|
|||||||
@ -37,13 +37,6 @@ class LicenseModel(BaseModel):
|
|||||||
expired_at: str = ""
|
expired_at: str = ""
|
||||||
|
|
||||||
|
|
||||||
class BrandingModel(BaseModel):
|
|
||||||
enabled: bool = False
|
|
||||||
login_page_logo: str = ""
|
|
||||||
workspace_logo: str = ""
|
|
||||||
favicon: str = ""
|
|
||||||
|
|
||||||
|
|
||||||
class FeatureModel(BaseModel):
|
class FeatureModel(BaseModel):
|
||||||
billing: BillingModel = BillingModel()
|
billing: BillingModel = BillingModel()
|
||||||
members: LimitationModel = LimitationModel(size=0, limit=1)
|
members: LimitationModel = LimitationModel(size=0, limit=1)
|
||||||
@ -82,7 +75,6 @@ class SystemFeatureModel(BaseModel):
|
|||||||
is_allow_create_workspace: bool = False
|
is_allow_create_workspace: bool = False
|
||||||
is_email_setup: bool = False
|
is_email_setup: bool = False
|
||||||
license: LicenseModel = LicenseModel()
|
license: LicenseModel = LicenseModel()
|
||||||
branding: BrandingModel = BrandingModel()
|
|
||||||
|
|
||||||
|
|
||||||
class FeatureService:
|
class FeatureService:
|
||||||
@ -115,6 +107,7 @@ class FeatureService:
|
|||||||
|
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
if dify_config.ENTERPRISE_ENABLED:
|
||||||
system_features.enable_web_sso_switch_component = True
|
system_features.enable_web_sso_switch_component = True
|
||||||
|
|
||||||
cls._fulfill_params_from_enterprise(system_features)
|
cls._fulfill_params_from_enterprise(system_features)
|
||||||
|
|
||||||
if dify_config.MARKETPLACE_ENABLED:
|
if dify_config.MARKETPLACE_ENABLED:
|
||||||
@ -206,9 +199,6 @@ class FeatureService:
|
|||||||
if "is_allow_create_workspace" in enterprise_info:
|
if "is_allow_create_workspace" in enterprise_info:
|
||||||
features.is_allow_create_workspace = enterprise_info["is_allow_create_workspace"]
|
features.is_allow_create_workspace = enterprise_info["is_allow_create_workspace"]
|
||||||
|
|
||||||
if "branding" in enterprise_info:
|
|
||||||
features.branding = enterprise_info["branding"]
|
|
||||||
|
|
||||||
if "license" in enterprise_info:
|
if "license" in enterprise_info:
|
||||||
license_info = enterprise_info["license"]
|
license_info = enterprise_info["license"]
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import click
|
|||||||
from celery import shared_task # type: ignore
|
from celery import shared_task # type: ignore
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
|
|
||||||
from configs import dify_config
|
|
||||||
from extensions.ext_mail import mail
|
from extensions.ext_mail import mail
|
||||||
|
|
||||||
|
|
||||||
@ -26,16 +25,10 @@ def send_email_code_login_mail_task(language: str, to: str, code: str):
|
|||||||
# send email code login mail using different languages
|
# send email code login mail using different languages
|
||||||
try:
|
try:
|
||||||
if language == "zh-Hans":
|
if language == "zh-Hans":
|
||||||
template = "email_code_login_mail_template_zh-CN.html"
|
html_content = render_template("email_code_login_mail_template_zh-CN.html", to=to, code=code)
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/email_code_login_mail_template_zh-CN_enterprise.html"
|
|
||||||
html_content = render_template(template, to=to, code=code)
|
|
||||||
mail.send(to=to, subject="邮箱验证码", html=html_content)
|
mail.send(to=to, subject="邮箱验证码", html=html_content)
|
||||||
else:
|
else:
|
||||||
template = "email_code_login_mail_template_en-US.html"
|
html_content = render_template("email_code_login_mail_template_en-US.html", to=to, code=code)
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/email_code_login_mail_template_en-US_enterprise.html"
|
|
||||||
html_content = render_template(template, to=to, code=code)
|
|
||||||
mail.send(to=to, subject="Email Code", html=html_content)
|
mail.send(to=to, subject="Email Code", html=html_content)
|
||||||
|
|
||||||
end_at = time.perf_counter()
|
end_at = time.perf_counter()
|
||||||
|
|||||||
@ -33,11 +33,8 @@ def send_invite_member_mail_task(language: str, to: str, token: str, inviter_nam
|
|||||||
try:
|
try:
|
||||||
url = f"{dify_config.CONSOLE_WEB_URL}/activate?token={token}"
|
url = f"{dify_config.CONSOLE_WEB_URL}/activate?token={token}"
|
||||||
if language == "zh-Hans":
|
if language == "zh-Hans":
|
||||||
template = "invite_member_mail_template_zh-CN.html"
|
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/invite_member_mail_template_zh-CN.html"
|
|
||||||
html_content = render_template(
|
html_content = render_template(
|
||||||
template,
|
"invite_member_mail_template_zh-CN.html",
|
||||||
to=to,
|
to=to,
|
||||||
inviter_name=inviter_name,
|
inviter_name=inviter_name,
|
||||||
workspace_name=workspace_name,
|
workspace_name=workspace_name,
|
||||||
@ -45,11 +42,8 @@ def send_invite_member_mail_task(language: str, to: str, token: str, inviter_nam
|
|||||||
)
|
)
|
||||||
mail.send(to=to, subject="立即加入 Dify 工作空间", html=html_content)
|
mail.send(to=to, subject="立即加入 Dify 工作空间", html=html_content)
|
||||||
else:
|
else:
|
||||||
template = "invite_member_mail_template_en-US.html"
|
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/invite_member_mail_template_en-US.html"
|
|
||||||
html_content = render_template(
|
html_content = render_template(
|
||||||
template,
|
"invite_member_mail_template_en-US.html",
|
||||||
to=to,
|
to=to,
|
||||||
inviter_name=inviter_name,
|
inviter_name=inviter_name,
|
||||||
workspace_name=workspace_name,
|
workspace_name=workspace_name,
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import click
|
|||||||
from celery import shared_task # type: ignore
|
from celery import shared_task # type: ignore
|
||||||
from flask import render_template
|
from flask import render_template
|
||||||
|
|
||||||
from configs import dify_config
|
|
||||||
from extensions.ext_mail import mail
|
from extensions.ext_mail import mail
|
||||||
|
|
||||||
|
|
||||||
@ -26,16 +25,10 @@ def send_reset_password_mail_task(language: str, to: str, code: str):
|
|||||||
# send reset password mail using different languages
|
# send reset password mail using different languages
|
||||||
try:
|
try:
|
||||||
if language == "zh-Hans":
|
if language == "zh-Hans":
|
||||||
template = "reset_password_mail_template_zh-CN.html"
|
html_content = render_template("reset_password_mail_template_zh-CN.html", to=to, code=code)
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/reset_password_mail_template_zh-CN.html"
|
|
||||||
html_content = render_template(template, to=to, code=code)
|
|
||||||
mail.send(to=to, subject="设置您的 Dify 密码", html=html_content)
|
mail.send(to=to, subject="设置您的 Dify 密码", html=html_content)
|
||||||
else:
|
else:
|
||||||
template = "reset_password_mail_template_en-US.html"
|
html_content = render_template("reset_password_mail_template_en-US.html", to=to, code=code)
|
||||||
if dify_config.ENTERPRISE_ENABLED:
|
|
||||||
template = "without-brand/reset_password_mail_template_en-US.html"
|
|
||||||
html_content = render_template(template, to=to, code=code)
|
|
||||||
mail.send(to=to, subject="Set Your Dify Password", html=html_content)
|
mail.send(to=to, subject="Set Your Dify Password", html=html_content)
|
||||||
|
|
||||||
end_at = time.perf_counter()
|
end_at = time.perf_counter()
|
||||||
|
|||||||
@ -1,70 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #101828;
|
|
||||||
background-color: #e9ebf0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 600px;
|
|
||||||
height: 360px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 36px 48px;
|
|
||||||
background-color: #fcfcfd;
|
|
||||||
border-radius: 16px;
|
|
||||||
border: 1px solid #ffffff;
|
|
||||||
box-shadow: 0 2px 4px -2px rgba(9, 9, 11, 0.08);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 28.8px;
|
|
||||||
}
|
|
||||||
.description {
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
.code-content {
|
|
||||||
padding: 16px 32px;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 16px;
|
|
||||||
background-color: #f2f4f7;
|
|
||||||
margin: 16px auto;
|
|
||||||
}
|
|
||||||
.code {
|
|
||||||
line-height: 36px;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
.tips {
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<p class="title">Your login code</p>
|
|
||||||
<p class="description">Copy and paste this code, this code will only be valid for the next 5 minutes.</p>
|
|
||||||
<div class="code-content">
|
|
||||||
<span class="code">{{code}}</span>
|
|
||||||
</div>
|
|
||||||
<p class="tips">If you didn't request a login, don't worry. You can safely ignore this email.</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #101828;
|
|
||||||
background-color: #e9ebf0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 600px;
|
|
||||||
height: 360px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 36px 48px;
|
|
||||||
background-color: #fcfcfd;
|
|
||||||
border-radius: 16px;
|
|
||||||
border: 1px solid #ffffff;
|
|
||||||
box-shadow: 0 2px 4px -2px rgba(9, 9, 11, 0.08);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 28.8px;
|
|
||||||
}
|
|
||||||
.description {
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
.code-content {
|
|
||||||
padding: 16px 32px;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 16px;
|
|
||||||
background-color: #f2f4f7;
|
|
||||||
margin: 16px auto;
|
|
||||||
}
|
|
||||||
.code {
|
|
||||||
line-height: 36px;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
.tips {
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<p class="title">登录验证码</p>
|
|
||||||
<p class="description">复制并粘贴此验证码,注意验证码仅在接下来的 5 分钟内有效。</p>
|
|
||||||
<div class="code-content">
|
|
||||||
<span class="code">{{code}}</span>
|
|
||||||
</div>
|
|
||||||
<p class="tips">如果您没有请求登录,请不要担心。您可以安全地忽略此电子邮件。</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #374151;
|
|
||||||
background-color: #E5E7EB;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 560px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 20px;
|
|
||||||
background-color: #F3F4F6;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.button {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 12px 24px;
|
|
||||||
background-color: #2970FF;
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
text-align: center;
|
|
||||||
transition: background-color 0.3s ease;
|
|
||||||
}
|
|
||||||
.button:hover {
|
|
||||||
background-color: #265DD4;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
font-size: 0.9em;
|
|
||||||
color: #777777;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="content">
|
|
||||||
<p>Dear {{ to }},</p>
|
|
||||||
<p>{{ inviter_name }} is pleased to invite you to join our workspace, a platform specifically designed for LLM application development. On platform, you can explore, create, and collaborate to build and operate AI applications.</p>
|
|
||||||
<p>Click the button below to log in to platform and join the workspace.</p>
|
|
||||||
<p style="text-align: center;"><a style="color: #fff; text-decoration: none" class="button" href="{{ url }}">Login Here</a></p>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
|
||||||
<p>Best regards</p>
|
|
||||||
<p>Please do not reply directly to this email; it is automatically sent by the system.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #374151;
|
|
||||||
background-color: #E5E7EB;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 560px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 20px;
|
|
||||||
background-color: #F3F4F6;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.button {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 12px 24px;
|
|
||||||
background-color: #2970FF;
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
text-align: center;
|
|
||||||
transition: background-color 0.3s ease;
|
|
||||||
}
|
|
||||||
.button:hover {
|
|
||||||
background-color: #265DD4;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
font-size: 0.9em;
|
|
||||||
color: #777777;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="content">
|
|
||||||
<p>尊敬的 {{ to }},</p>
|
|
||||||
<p>{{ inviter_name }} 现邀请您加入我们的工作区,这是一个专为 LLM 应用开发而设计的平台。在平台上,您可以探索、创造和合作,构建和运营 AI 应用。</p>
|
|
||||||
<p>点击下方按钮即可登录并且加入空间。</p>
|
|
||||||
<p style="text-align: center;"><a style="color: #fff; text-decoration: none" class="button" href="{{ url }}">在此登录</a></p>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
|
||||||
<p>此致</p>
|
|
||||||
<p>请不要直接回复此电子邮件;由系统自动发送。</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #101828;
|
|
||||||
background-color: #e9ebf0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 600px;
|
|
||||||
height: 360px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 36px 48px;
|
|
||||||
background-color: #fcfcfd;
|
|
||||||
border-radius: 16px;
|
|
||||||
border: 1px solid #ffffff;
|
|
||||||
box-shadow: 0 2px 4px -2px rgba(9, 9, 11, 0.08);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 28.8px;
|
|
||||||
}
|
|
||||||
.description {
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
.code-content {
|
|
||||||
padding: 16px 32px;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 16px;
|
|
||||||
background-color: #f2f4f7;
|
|
||||||
margin: 16px auto;
|
|
||||||
}
|
|
||||||
.code {
|
|
||||||
line-height: 36px;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
.tips {
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<p class="title">Set your password</p>
|
|
||||||
<p class="description">Copy and paste this code, this code will only be valid for the next 5 minutes.</p>
|
|
||||||
<div class="code-content">
|
|
||||||
<span class="code">{{code}}</span>
|
|
||||||
</div>
|
|
||||||
<p class="tips">If you didn't request, don't worry. You can safely ignore this email.</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
font-family: 'Arial', sans-serif;
|
|
||||||
line-height: 16pt;
|
|
||||||
color: #101828;
|
|
||||||
background-color: #e9ebf0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 600px;
|
|
||||||
height: 360px;
|
|
||||||
margin: 40px auto;
|
|
||||||
padding: 36px 48px;
|
|
||||||
background-color: #fcfcfd;
|
|
||||||
border-radius: 16px;
|
|
||||||
border: 1px solid #ffffff;
|
|
||||||
box-shadow: 0 2px 4px -2px rgba(9, 9, 11, 0.08);
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.header img {
|
|
||||||
max-width: 100px;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.title {
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 28.8px;
|
|
||||||
}
|
|
||||||
.description {
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
.code-content {
|
|
||||||
padding: 16px 32px;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 16px;
|
|
||||||
background-color: #f2f4f7;
|
|
||||||
margin: 16px auto;
|
|
||||||
}
|
|
||||||
.code {
|
|
||||||
line-height: 36px;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
.tips {
|
|
||||||
line-height: 16px;
|
|
||||||
color: #676f83;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<p class="title">设置您的账户密码</p>
|
|
||||||
<p class="description">复制并粘贴此验证码,注意验证码仅在接下来的 5 分钟内有效。</p>
|
|
||||||
<div class="code-content">
|
|
||||||
<span class="code">{{code}}</span>
|
|
||||||
</div>
|
|
||||||
<p class="tips">如果您没有请求,请不要担心。您可以安全地忽略此电子邮件。</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Loading…
x
Reference in New Issue
Block a user