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

Django email模块如何判断与SMTP服务器的连接是否已建立?

邮件连接状态检测方法

你使用的mail.get_connection()是Django框架的邮件接口,针对标准SMTP邮件后端,可以通过以下方式检测连接状态:

方法1:直接调用open()(推荐)

Django内置的open()方法本身已经实现了幂等逻辑,会自动判断当前连接是否存活,仅在未连接的状态下才会新建连接,重复调用不会产生额外开销:

connection = mail.get_connection()
# 无需提前判断状态,直接调用即可保证连接处于开启状态
connection.open()

方法2:手动检测连接状态

如果需要主动获取当前连接的状态,可以通过判断连接实例的内置属性实现:

connection = mail.get_connection()
# 连接开启的判定条件
is_opened = (
    connection.connection is not None 
    and getattr(connection.connection, 'sock', None) is not None
)

if not is_opened:
    connection.open()

判定逻辑说明:

  • connection.connection 存储实际的smtplib.SMTP连接实例,连接未开启时为None
  • smtplib.SMTP实例的sock属性存储TCP连接套接字,连接断开后会被自动置为None

以上逻辑适配所有遵循Django邮件后端规范的实现,包括自定义后端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:09:00