请问如何为timeout
设置smtplib
或有人可以解释为什么它对我不起作用?我在here上找到了答案,但自己尝试一下,我发现它不起作用。
这里的示例代码即使将timeout
设置为10秒也要花费30到40秒才能通过异常。
import time, socket
from smtplib import SMTP
socket.setdefaulttimeout(10)
start_time = time.time()
try:
print("hello")
smtp_server = SMTP(host='smtp.office365.com', port=25, timeout=10)
elapsed = int(time.time() - start_time)
print('Elapsed Time: {:02d}:{:02d}:{:02d}\n'.format(elapsed // 3600, (elapsed % 3600 // 60), elapsed % 60))
except Exception as e:
print(e)
elapsed = int(time.time() - start_time)
print('Time + Exception: {:02d}:{:02d}:{:02d}\n'.format(elapsed // 3600, (elapsed % 3600 // 60), elapsed % 60))
注意:该错误是由于错误的smtp端口引起的,目的是在无法建立连接的情况下快速失败。如果我使用端口587,这是正确的端口。这一切都在不到一秒钟的时间内完成。