2012-05-18 53 views
0

有一些問題從telnet庫獲取結果,但我得到的是標題,然後等待輸入空白。smtp telnet python

任何想法如何從Telnet獲得輸出?

def smtp_test(server_info): 
print "Check server info: " + server_info 
cpos = server_info.find(':') 
try: 
    sock = socket() 
    # sock.connect((server_info[:cpos], int(server_info[cpos+1:]))) 
    sock.connect(("mail.SMTPSERVERNAME.com", 25)) 
    print sock.recv(256) 
    sock.send("HELO client.example.com\r") 
    print sock.recv(256) 
    sock.send("MAIL from: <[email protected]>\r") 
    print sock.recv(256) 
    #sock.send("RCPT to: <[email protected]>") 
    #print sock.recv(256) 
    sock.close 
    return True 
except: 
    return False 

回答

2

\r不是行終止符。因此服務器不會回覆,並等待來自服務器的回覆,然後等待util看到全行。經典的僵局。

嘗試使用\r\n

而你應該考慮使用smtplib來代替。

+0

或者只是在郵件末尾嘗試'\ n'。 –

+0

完美地嘗試\ n和\ r但不在一起。 – namit

+0

@CharlesBeattie [RFC 5321](http://tools.ietf.org/html/rfc5321)指定''作爲行終止符。許多服務器單獨接受'',但它們不是必需的。 – mata