Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python smtplib,开始时超时_Python_Smtplib - Fatal编程技术网

Python smtplib,开始时超时

Python smtplib,开始时超时,python,smtplib,Python,Smtplib,我正在尝试为在我们的办公网络上运行的一个小监控脚本设置一些基本的电子邮件功能。在我的Ubuntu10.10服务器上运行脚本(见下文)可以正常工作,但当我在Windows桌面计算机上运行脚本时,它会在发送时超时:send:'STARTTLS\r\n',回复:reply:'451 4.7.0等待客户端输入超时\r\n' 尽管我将在Linux服务器上运行它,但我很好奇为什么它不能在Windows下工作。是不同的Python版本导致了这个问题吗 设置: # -*- coding: utf-8 -*- i

我正在尝试为在我们的办公网络上运行的一个小监控脚本设置一些基本的电子邮件功能。在我的Ubuntu10.10服务器上运行脚本(见下文)可以正常工作,但当我在Windows桌面计算机上运行脚本时,它会在发送时超时:
send:'STARTTLS\r\n'
,回复:
reply:'451 4.7.0等待客户端输入超时\r\n'

尽管我将在Linux服务器上运行它,但我很好奇为什么它不能在Windows下工作。是不同的Python版本导致了这个问题吗

设置:

# -*- 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()
SMTP服务器:Exchange 2010、Windows server 2008 R2 x64

Python机器#1:Windows7SP1x64,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()

首先想到的是Windows防火墙正在阻止Python.exe可执行文件的出站套接字连接。您是否尝试过使用Python建立任何其他类型的连接,例如使用
urllib2
?如果是,结果如何


假设无法使用Python进行连接,请确保将Python.exe作为例外添加到Windows防火墙中。

首先想到的是,Windows防火墙正在阻止Python.exe可执行文件的出站套接字连接。您是否尝试过使用Python建立任何其他类型的连接,例如使用
urllib2
?如果是,结果如何


假设您无法使用Python进行连接,请确保将Python.exe作为例外添加到Windows防火墙中。

您好,谢谢您的回答。不幸的是,这似乎不是解决办法。另一个我用来抓取网页的脚本做得很好,所以我不认为这是个问题。无论哪种方式,我都将python.exe添加为Windows防火墙例外-仍然是相同的问题。好吧,既然您使用的是通过TLS(SMTPS)的SMTP,我假设您正在连接TCP端口465?如果打开命令提示符并输入“telnet exchange serv 465”,会发生什么情况?我们需要确认您是否可以手动连接到SMTPS端口,以确保您在操作系统级别具有基本连接。您好,很抱歉没有回复您。这个问题的优先级被大大降低了,我可能在很长一段时间内都没有时间去尝试解决它。谢谢你的帮助。:)你好,谢谢你的回答。不幸的是,这似乎不是解决办法。另一个我用来抓取网页的脚本做得很好,所以我不认为这是个问题。无论哪种方式,我都将python.exe添加为Windows防火墙例外-仍然是相同的问题。好吧,既然您使用的是通过TLS(SMTPS)的SMTP,我假设您正在连接TCP端口465?如果打开命令提示符并输入“telnet exchange serv 465”,会发生什么情况?我们需要确认您是否可以手动连接到SMTPS端口,以确保您在操作系统级别具有基本连接。您好,很抱歉没有回复您。这个问题的优先级被大大降低了,我可能在很长一段时间内都没有时间去尝试解决它。谢谢你的帮助。:)