我试着用我的服务器的状态写每天发送电子邮件的小应用,我正在使用smtplib,bat有一些小问题,我不知道可以设置连接超时!我正在尝试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如何设置此函数的连接超时?谢谢
发布于 2014-02-17 18:52:24
从Python2.6开始,您可以在SMTP库(official documentation)中设置超时:
class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])如果未指定,将使用全局默认超时设置
如果您使用较旧版本的Python (< 2.6 ),则需要设置套接字默认超时:
import socket
socket.setdefaulttimeout(120)对我来说工作得很好。
发布于 2014-02-17 18:52:31
虽然smtplib在内部使用socket,但您可以在连接到主机之前使用socket.setdefaulttimeout():
def connect(host,user,password):
try:
socket.setdefaulttimeout(2 * 60)
smtp = smtplib.SMTP(host)
...发布于 2019-07-14 15:41:01
Python 3.7有一个额外的超时参数,可以使用:
https://docs.python.org/3/library/smtplib.html#smtplib.SMTP
Python 2中不存在此参数
https://stackoverflow.com/questions/21826829
复制相似问题