即使设置了套接字超时,SMTPLIB超时也不起作用

时间:2019-11-23 01:31:34

标签: python python-3.x smtplib

请问如何为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,这是正确的端口。这一切都在不到一秒钟的时间内完成。

0 个答案:

没有答案