如何在Python 2.4中设置smtplib发送超时?

3 投票
1 回答
1738 浏览
提问于 2025-04-15 13:46

我在用smtplib发送邮件时遇到问题,如果发送失败,程序就会卡住,因为没有超时的设置。我使用的服务器只支持Python 2.4,而且永远不会更新到更高的版本,所以我不能使用后面版本中的SMTP构造函数里的超时参数。

Python 2.4的文档显示,SMTP类没有'超时'这个参数:

class SMTP([host[, port[, local_hostname]]])

那我该怎么模拟这个功能呢?

1 个回答

6
import socket
socket.setdefaulttimeout(120)

这段话的意思是,任何网络连接在2分钟后都会超时,除非你特别去修改这个连接的超时时间(而且我觉得Python 2.4里的SMTP模块并没有提供这样的修改功能)。

补充说明:根据提问者的评论,这样做会导致TLS(一种安全协议)出问题,所以我们需要另找办法……

那我们可以试试把Python 2.6的smtplib源文件拿过来,作为自己的模块用在2.4上?这应该不会太难……而且这样可以干净利落地支持超时设置!-)

你可以在这里查看相关内容……

撰写回答