1

我正在尝试为我在办公室网络上运行的一个小型监控脚本设置一些基本的电子邮件功能。在我的 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()
4

1 回答 1

1

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

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

于 2011-05-02T15:37:26.100 回答