python smtplib设置超时

kin*_*ope 0 python smtplib

我尝试写小应用程序每天发送电子邮件我的服务器的状态,我使用smtplib,蝙蝠有一点问题,我不知道可以设置连接超时!即时尝试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
Run Code Online (Sandbox Code Playgroud)

如何设置连接超时到此功能?谢谢

小智 6

从Python 2.6,您可以在SMTP库中设置超时(官方文档):

class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])
Run Code Online (Sandbox Code Playgroud)

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

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

import socket
socket.setdefaulttimeout(120)
Run Code Online (Sandbox Code Playgroud)

对我来说工作得很好.