You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中检测邮件服务器连接失败的错误?

解决Django邮件服务器连接失败的检测问题

嘿,这个问题其实很好解决——Django的EmailMessage.send()方法在邮件发送失败(包括服务器宕机、连接不上)时,会抛出对应的SMTP异常,你只需要用try-except块捕获这些异常,就能针对性处理错误提示啦。

具体步骤:

  1. 导入必要模块:首先要导入smtplib,因为邮件发送相关的异常都来自这个标准库。
  2. 用try-except包裹发送逻辑:捕获连接失败的特定异常,或者更宽泛的SMTP异常,然后输出你需要的错误信息。

修改后的代码示例:

import smtplib
from django.core.mail import EmailMessage

# 构建邮件的代码保持不变
email = EmailMessage()
email.subject = subject
email.body = body
email.from_email = from_email
email.to = to
email.attach(file_name, pdf, 'application/pdf')

try:
    # 尝试发送邮件
    email.send()
    # 发送成功后的可选操作,比如打印提示或记录日志
    # print("邮件发送成功")
except smtplib.SMTPConnectError:
    # 专门捕获「无法连接到邮件服务器」的情况(比如服务器宕机、地址/端口错误)
    print("Mail not sent")
    # 如果是在Django视图中,可以用消息框架传递错误到前端
    # messages.error(request, "Mail not sent")
except smtplib.SMTPException as e:
    # 捕获其他所有SMTP相关错误(比如认证失败、邮件格式问题等)
    print(f"Mail not sent: {str(e)}")

额外说明:

  • SMTPConnectError是最精准的异常类,专门对应无法建立与邮件服务器连接的场景,完全匹配你说的「服务器宕机」情况。
  • 如果想覆盖所有邮件发送相关的错误,可以只捕获SMTPException(它是所有SMTP异常的父类),但建议优先捕获特定异常,再用父类兜底。
  • 如果你是在Django Web应用中使用,可以结合Django的messages框架,把错误消息传递给前端页面,让用户能看到直观的提示。

内容的提问来源于stack exchange,提问作者MiniGunnR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:51:05