首页 > 解决方案 > socket.error:[Errno 10060]:无法使用 python 从 Outlook 发送电子邮件

问题描述

我下面的代码可以正常工作几个月。现在,它给了我下面的错误,

socket.error: [Errno 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

        sender = 'myemail@email.com'
        receiver = ['myemail@email.com',]
        msg = MIMEMultipart()

        print("Sending an email to {} ...".format(receiver))

        msg['From'] = sender
        msg['To'] = ", ".join(receiver)
        msg['Subject'] = 'Automation Testing'

        body = 'Hello,' 
        msg.attach(MIMEText(body, 'plain'))
        # filename = 'Fidelity-Success' + timestamp + '.png'
        attachment = open('C:\\mydrive\\{}'.format(filename), 'rb')

        part = MIMEBase('application', 'octet-stream')
        part.set_payload((attachment).read())
        # part.set_payload((attachment).read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', "attachment; filename= " + filename)

        msg.attach(part)

        server = smtplib.SMTP('mail.email.com', 587, timeout=120)
        #server = smtplib.SMTP_SSL('mail.email.com', 93, timeout=120)

        server.starttls()
        server.login(sender, "password")
        text = msg.as_string()
        server.sendmail(sender, receiver, text)
        # server.quit()
        time.sleep(4)
        print("Email sent.")

我尝试了各种端口和超时,但没有运气。我不知道为什么它突然停止工作。

非常感谢任何帮助。

标签: pythonpython-2.7emailoutlookms-office

解决方案


出现网络问题。我只需要添加邮件和 smtp 服务器的 IP。

临时修复:在管理员模式下在命令提示符下运行以下命令:

route add 'IP of mail server' mask 255.255.255.255 'default gateway of your machine'
route add 'IP of smtp server' mask 255.255.255.255 'default gateway of your machine'

永久修复:要求网络团队将邮件服务器的 IP 添加到拆分隧道。


推荐阅读