core/auth/email.py

33 lines
1.2 KiB
Python
Raw Normal View History

from typing import Any
2023-10-26 20:38:31 +00:00
import requests
2023-10-26 21:07:35 +00:00
from settings import MAILGUN_API_KEY, MAILGUN_DOMAIN
2023-10-30 21:00:55 +00:00
api_url = "https://api.mailgun.net/v3/%s/messages" % (MAILGUN_DOMAIN or "discours.io")
noreply = "discours.io <noreply@%s>" % (MAILGUN_DOMAIN or "discours.io")
lang_subject = {"ru": "Подтверждение почты", "en": "Confirm email"}
2022-10-05 15:54:29 +00:00
2022-10-21 05:47:58 +00:00
async def send_auth_email(user: Any, token: str, lang: str = "ru", template: str = "email_confirmation") -> None:
2022-10-05 15:54:29 +00:00
try:
to = f"{user.name} <{user.email}>"
2023-10-30 21:00:55 +00:00
if lang not in ["ru", "en"]:
lang = "ru"
2022-10-22 12:02:15 +00:00
subject = lang_subject.get(lang, lang_subject["en"])
2022-11-27 13:14:17 +00:00
template = template + "_" + lang
2022-10-22 12:02:15 +00:00
payload = {
"from": noreply,
"to": to,
"subject": subject,
"template": template,
"h:X-Mailgun-Variables": f'{{ "token": "{token}" }}',
2022-10-22 12:02:15 +00:00
}
print(f"[auth.email] payload: {payload!r}")
2022-11-22 03:11:26 +00:00
# debug
# print('http://localhost:3000/?modal=auth&mode=confirm-email&token=%s' % token)
response = requests.post(api_url, auth=("api", MAILGUN_API_KEY), data=payload, timeout=30)
2022-10-05 15:54:29 +00:00
response.raise_for_status()
except Exception as e:
print(e)