当电子邮件发送失败时,我遇到了 smtplib 捆绑我的程序的问题,因为永远不会引发超时。我使用的服务器没有也永远不会有大于 2.4 的 python,所以我不能在更高版本的 python 中使用 SMTP 构造函数的 timeout 参数。
Python 2.4 的文档显示 SMTP 类没有“超时”参数:
class SMTP([host[, port[, local_hostname]]])
那么如何模拟这个功能呢?
当电子邮件发送失败时,我遇到了 smtplib 捆绑我的程序的问题,因为永远不会引发超时。我使用的服务器没有也永远不会有大于 2.4 的 python,所以我不能在更高版本的 python 中使用 SMTP 构造函数的 timeout 参数。
Python 2.4 的文档显示 SMTP 类没有“超时”参数:
class SMTP([host[, port[, local_hostname]]])
那么如何模拟这个功能呢?
import socket
socket.setdefaulttimeout(120)
将在 2 分钟后使任何套接字超时,除非特定套接字的超时发生更改(并且我相信 Python 2.4 中的 SMTP 不会执行后者)。
编辑:显然根据 OP 的评论,这破坏了 TLS,所以,计划 B ......:
获取 2.6 的 smtplib 源文件并将其作为您自己的模块反向移植到 2.4 怎么样?不应该太难......并且确实支持超时!-)
看这里...