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 に答える