Underground-Digital/Workflow-Engine
0
1import logging2import time3 4import click5from celery import shared_task6from flask import render_template7 8from extensions.ext_mail import mail9 10 11@shared_task(queue="mail")12def send_email_code_login_mail_task(language: str, to: str, code: str):13 """14 Async Send email code login mail15 :param language: Language in which the email should be sent (e.g., 'en', 'zh')16 :param to: Recipient email address17 :param code: Email code to be included in the email18 """19 if not mail.is_inited():20 return21 22 logging.info(click.style("Start email code login mail to {}".format(to), fg="green"))23 start_at = time.perf_counter()24 25 # send email code login mail using different languages26 try:27 if language == "zh-Hans":28 html_content = render_template("email_code_login_mail_template_zh-CN.html", to=to, code=code)29 mail.send(to=to, subject="邮箱验证码", html=html_content)30 else:31 html_content = render_template("email_code_login_mail_template_en-US.html", to=to, code=code)32 mail.send(to=to, subject="Email Code", html=html_content)33 34 end_at = time.perf_counter()35 logging.info(36 click.style(37 "Send email code login mail to {} succeeded: latency: {}".format(to, end_at - start_at), fg="green"38 )39 )40 except Exception:41 logging.exception("Send email code login mail to {} failed".format(to))42 