"""Aislo 인증·조직 알림 이메일 템플릿.""" from html import escape def otp_email(code: str, purpose: str) -> tuple[str, str]: safe_code = escape(code) safe_purpose = escape(purpose) subject = f"[Aislo] {purpose} 인증 코드" html = ( "
{safe_purpose} 인증 코드는 다음과 같습니다.
" f"{safe_code}
" "코드는 5분 동안 유효합니다.
" ) return subject, html def join_request_email(member_name: str, member_email: str) -> tuple[str, str]: subject = "[Aislo] 신규 팀원 가입 승인 요청" html = ( "{escape(member_name)} ({escape(member_email)}) 님이 회사 가입을 요청했습니다.
" "Aislo 마스터 화면에서 승인 또는 거부해 주세요.
" ) return subject, html def join_result_email(approved: bool) -> tuple[str, str]: result = "승인" if approved else "거부" return f"[Aislo] 가입 요청 {result}", f"회사 가입 요청이 {result}되었습니다.
" def security_alert_email(email: str, failures: int) -> tuple[str, str]: return ( "[Aislo] 반복 로그인 실패 경고", f"{escape(email)} 계정에서 로그인 실패가 {failures}회 발생했습니다.
", ) def support_request_email( name: str, email: str, phone: str | None, company_name: str | None, subject: str, message: str, ) -> tuple[str, str]: # 제목: 회사명이 있으면 [회사명 · 이름], 없으면 [이름] who = f"{company_name} · {name}" if company_name else name subject_text = f"[Aislo 문의|{escape(who)}] {escape(subject)}" # 줄바꿈을회사: {escape(company_name)}
" if company_name else "" phone_row = f"연락처: {escape(phone)}
" if phone else "" html = ( "이름: {escape(name)}
" f"이메일: {escape(email)}
" f"{phone_row}" f"제목: {escape(subject)}
" "문의 내용:
{safe_message}
" "답변은 위 이메일 주소(" f"{escape(email)})로 회신하세요.
" ) return subject_text, html