2011-05-02 113 views
1

我正在嘗試爲我在我們的辦公網絡上運行的小監控腳本設置一些基本的電子郵件功能。在我的Ubuntu 10.10服務器上運行腳本(見下文)可以正常工作,但是當我在Windows桌面機上運行腳本時,它會在send: 'STARTTLS\r\n'上使用reply: '451 4.7.0 Timeout waiting for client input\r\n'超時。Python smtplib,啓動時的超時時間

雖然我會在Linux服務器上運行這個,但我很好奇它爲什麼不能在Windows下工作。它是導致問題的不同的Python版本嗎?

設置:

SMTP服務器:Exchange 2010中,在Windows Server 2008 R2 x64的

的Python機#1:Windows 7的SP1 64位,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 = "[email protected]" 
    TO = ["[email protected]"] 
    TEXT = '''\ 
    From: [email protected] 
    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() 

回答

1

首先想到的是Windows防火牆阻止來自Python.exe可執行文件的出站套接字連接。您是否嘗試過使用Python建立任何其他類型的連接,例如使用urllib2?如果是這樣,結果如何?

假設您無法使用Python連接出來,請確保將Python.exe作爲例外添加到Windows防火牆中。

+0

你好,謝謝你的回答。不幸的是,這似乎並不是解決方案。我用來抓取網頁的另一個腳本運行良好,所以我認爲這不是問題。無論哪種方式,我將python.exe作爲Windows防火牆異常添加 - 仍是同樣的問題。 – 2011-05-04 11:12:30

+0

好吧,因爲您通過TLS使用SMTP(SMTPS),我假設您連接到TCP端口465?如果您打開命令提示符並輸入「telnet exchange-serv 465」,會發生什麼情況?我們需要確認您是否可以手動連接到SMTPS端口,以確保您在操作系統級別具有基本連接。 – jathanism 2011-05-04 15:38:54

+0

嗨,很抱歉沒有回覆你。這個問題被嚴重低估了,並且我可能在一段時間內無法解決它。感謝您的幫助。 :) – 2012-01-02 08:07:04