python smtplib设置时间ou

2024-05-15 22:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着每天用服务器的状态写一个发送邮件的小程序,我用的是smtplib,bat有点问题我不知道能不能设置连接超时!im try whit smtp.setdefaulttimeout(30)bat不工作

def connect(host,user,password)
  try:
    smtp = smtplib.SMTP(host)
        smtp.login(user, password)
        code = smtp.ehlo()[0]
        if not (200 <= code <= 299):
            code = smtp.helo()[0]
 except:
     pass

如何设置此函数的连接超时?谢谢


Tags: 程序服务器host状态邮件codepasswordsmtp
3条回答

在内部,smtplib使用socket时,可以在连接到主机之前使用socket.setdefaulttimeout()

def connect(host,user,password):
    try:
        socket.setdefaulttimeout(2 * 60)
        smtp = smtplib.SMTP(host)
        ...

从Python2.6可以在SMTP库(official documentation)中设置超时:

class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])

“如果未指定,将使用全局默认超时设置”

如果使用较旧版本的Python(<;2.6),则需要设置套接字默认超时:

import socket
socket.setdefaulttimeout(120)

对我来说工作很好。

Python 3.7有一个额外的超时参数,可以使用:

https://docs.python.org/3/library/smtplib.html#smtplib.SMTP

Python 2中不存在此参数

相关问题 更多 >