first commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import logging
|
||||
from email.message import EmailMessage
|
||||
|
||||
import aiosmtplib
|
||||
|
||||
from app.config import settings
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def _send(subject: str, recipient: str, text: str) -> None:
|
||||
if settings.email_delivery_mode == "console":
|
||||
logger.warning("开发邮件\nTo: %s\nSubject: %s\n%s", recipient, subject, text)
|
||||
return
|
||||
|
||||
message = EmailMessage()
|
||||
message["From"] = settings.email_from
|
||||
message["To"] = recipient
|
||||
message["Subject"] = subject
|
||||
message.set_content(text)
|
||||
|
||||
await aiosmtplib.send(
|
||||
message,
|
||||
hostname=settings.smtp_host,
|
||||
port=settings.smtp_port,
|
||||
username=settings.smtp_username,
|
||||
password=settings.smtp_password,
|
||||
start_tls=settings.smtp_starttls,
|
||||
)
|
||||
|
||||
|
||||
async def send_confirmation_email(recipient: str, token: str) -> None:
|
||||
url = f"{settings.frontend_url.rstrip('/')}/auth/confirm?token={token}"
|
||||
await _send(
|
||||
"确认你的 OpenCloud 邮箱",
|
||||
recipient,
|
||||
f"请打开下面的链接完成邮箱确认:\n\n{url}\n\n链接将在指定时间后失效。",
|
||||
)
|
||||
|
||||
|
||||
async def send_password_reset_email(recipient: str, token: str) -> None:
|
||||
url = f"{settings.frontend_url.rstrip('/')}/auth/reset-password?token={token}"
|
||||
await _send(
|
||||
"重置你的 OpenCloud 密码",
|
||||
recipient,
|
||||
f"请打开下面的链接重置密码:\n\n{url}\n\n如果不是你发起的请求,请忽略此邮件。",
|
||||
)
|
||||
Reference in New Issue
Block a user