fix: run blocking SMTP calls in a thread to avoid blocking the event loop (#3988)
This commit is contained in:
@@ -222,12 +222,20 @@ async def send_email(
|
|||||||
msg["Subject"] = subject
|
msg["Subject"] = subject
|
||||||
msg.attach(MIMEText(message, "plain"))
|
msg.attach(MIMEText(message, "plain"))
|
||||||
username = username if len(username) > 0 else from_email
|
username = username if len(username) > 0 else from_email
|
||||||
with smtplib.SMTP(server, port) as smtp_server:
|
|
||||||
smtp_server.starttls()
|
def _send() -> bool:
|
||||||
smtp_server.login(username, password)
|
with smtplib.SMTP(server, port) as smtp_server:
|
||||||
smtp_server.sendmail(from_email, to_emails, msg.as_string())
|
smtp_server.starttls()
|
||||||
|
smtp_server.login(username, password)
|
||||||
|
smtp_server.sendmail(from_email, to_emails, msg.as_string())
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
try:
|
||||||
|
return await asyncio.to_thread(_send)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Sending Email failed. {e!s}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def dispatch_webhook(payment: Payment):
|
async def dispatch_webhook(payment: Payment):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user