我正在尝试为我在办公室网络上运行的小型监控脚本设置一些基本的电子邮件功能。在我的Ubuntu 10.10服务器上运行脚本(见下文)工作正常,但是当我在Windows桌面计算机上运行它时,send: 'STARTTLS\r\n'
上的reply: '451 4.7.0 Timeout waiting for client input\r\n'
会超时。
虽然我会在Linux服务器上运行它,但我很好奇为什么它不能在Windows下运行。它是导致问题的不同Python版本吗?
设定:
SMTP服务器:Exchange 2010,Windows Server 2008 R2 x64
Python机器#1:Windows 7 SP1 x64,Python 2.7.1 ---(失败)
Python机器#2:Ubuntu服务器10.10 x86,Python 2.6.6 ---(工作)
脚本:
# -*- coding: utf-8 -*-
import smtplib
def main():
SERVER="exchange-serv"
FROM = "valid@foo.com"
TO = ["valid2@foo.com"]
TEXT = '''\
From: valid@foo.com
Subject: testin'
Test message
'''
server = smtplib.SMTP(SERVER)
server.set_debuglevel(1)
server.starttls()
server.login('user', 'pass')
server.sendmail(FROM, TO, TEXT)
server.quit()
if __name__ == "__main__":
main()
答案 0 :(得分:1)
首先想到的是Windows防火墙阻止来自Python.exe可执行文件的出站套接字连接。您是否尝试过使用Python建立任何其他类型的连接,例如使用urllib2
?如果是的话,结果是什么?
假设您无法使用Python连接,请确保将Python.exe作为例外添加到Windows防火墙中。