Files
fastapi-best-architecture/backend/plugin/email/api/v1/email.py
T
Wu Clan 5762834744 Update the ruff rules and format the code (#846)
* Update the ruff rules and format the code

* Update the per-file-ignores

* Update the ci

* Update rules

* Fix codes

* Fix pagination

* Update rules
2025-10-10 19:02:49 +08:00

33 lines
1.1 KiB
Python

import random
from typing import Annotated
from fastapi import APIRouter, Body, Request
from backend.common.response.response_schema import ResponseModel, response_base
from backend.common.security.jwt import DependsJwtAuth
from backend.core.conf import settings
from backend.database.db import CurrentSession
from backend.database.redis import redis_client
from backend.plugin.email.utils.send import send_email
router = APIRouter()
@router.post('/captcha', summary='发送电子邮件验证码', dependencies=[DependsJwtAuth])
async def send_email_captcha(
request: Request,
db: CurrentSession,
recipients: Annotated[str | list[str], Body(embed=True, description='邮件接收者')],
) -> ResponseModel:
code = ''.join([str(random.randint(1, 9)) for _ in range(6)])
ip = request.state.ip
await redis_client.set(
f'{settings.EMAIL_CAPTCHA_REDIS_PREFIX}:{ip}',
code,
ex=settings.EMAIL_CAPTCHA_EXPIRE_SECONDS,
)
content = {'code': code, 'expired': int(settings.EMAIL_CAPTCHA_EXPIRE_SECONDS / 60)}
await send_email(db, recipients, 'FBA 验证码', content, 'captcha.html')
return response_base.success()