CD / api /auth-service /app /services /email.py
tkadkghdlf's picture
Sync from GitHub via hub-sync
f711f7f verified
Raw
History Blame Contribute Delete
2.02 kB
import logging
import smtplib
from email.message import EmailMessage
from app.core.config import settings
logger = logging.getLogger(__name__)
def _send_email(to_email: str, subject: str, body: str) -> bool:
if not settings.smtp_host or not settings.smtp_from_email:
logger.warning("SMTP is not configured. Cannot send email to %s", to_email)
return False
message = EmailMessage()
message["Subject"] = subject
message["From"] = f"{settings.smtp_from_name} <{settings.smtp_from_email}>"
message["To"] = to_email
message.set_content(body)
try:
with smtplib.SMTP(settings.smtp_host, settings.smtp_port, timeout=15) as server:
server.ehlo()
if settings.smtp_use_tls:
server.starttls()
server.ehlo()
if settings.smtp_username and settings.smtp_password:
server.login(settings.smtp_username, settings.smtp_password)
server.send_message(message)
return True
except Exception:
logger.exception("Failed to send email to %s", to_email)
return False
def send_password_reset_email(to_email: str, reset_url: str) -> bool:
subject = "[Run The Shape] λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ • μ•ˆλ‚΄"
body = (
"λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •μ„ μš”μ²­ν•˜μ…¨μŠ΅λ‹ˆλ‹€.\n\n"
"μ•„λž˜ 링크λ₯Ό 눌러 μƒˆ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ„€μ •ν•΄μ£Όμ„Έμš”.\n"
f"{reset_url}\n\n"
"μš”μ²­ν•˜μ§€ μ•ŠμœΌμ…¨λ‹€λ©΄ 이 메일을 λ¬΄μ‹œν•˜μ…”λ„ λ©λ‹ˆλ‹€."
)
return _send_email(to_email, subject, body)
def send_email_verification_code(to_email: str, code: str) -> bool:
subject = "[Run The Shape] νšŒμ›κ°€μž… 이메일 인증번호"
body = (
"Run The Shape νšŒμ›κ°€μž… 인증번호 μ•ˆλ‚΄μž…λ‹ˆλ‹€.\n\n"
f"인증번호: {code}\n\n"
"μΈμ¦λ²ˆν˜ΈλŠ” 10λΆ„ λ™μ•ˆ μœ νš¨ν•©λ‹ˆλ‹€.\n"
"μš”μ²­ν•˜μ§€ μ•ŠμœΌμ…¨λ‹€λ©΄ 이 메일을 λ¬΄μ‹œν•˜μ…”λ„ λ©λ‹ˆλ‹€."
)
return _send_email(to_email, subject, body)