2016-07-07 54 views
0

我有一個掃描腳本,目前通過連接到SMTP服務器,打印結果並移動到列表中的下一個服務器。這是第一個連接代碼:smtp = smtplib.SMTP(主機)>(mail.host)?

def sendchk(listindex, host, user, password): # seperated function for checking 
try: 
    smtp = smtplib.SMTP(host) 
    smtp.login(user, password) 
    code = smtp.ehlo()[0] 

後的失敗「除了」:

smtp.quit() 
except(socket.gaierror, socket.error, socket.herror, smtplib.SMTPException), msg: 
    print "[-] Login Failed:", host, user, password 
    pass 

我試圖讓它與同一主機重複相同的代碼,添加一個子域。 「郵件。」我認爲這將工作:

smtp.quit() 
except(socket.gaierror, socket.error, socket.herror, smtplib.SMTPException), msg: 
    print "[-] Login Failed:", host, user, password 
    sub1 = 'mail.' 
    host2 = '{0}@{1}'.format(sub1, host) 
    smtp = smtplib.SMTP(host2) 

但它堵塞,說服務器列表中有一個問題。 在這裏向主機注入前綴的更好方法是什麼?

回答

0

未經測試:如果sub1是「郵件」。和主機是「myhost.com」,然後'{0}@{1}'.format(sub1, host)將導致郵件。@ myhost.com。這真的是你的子域名嗎?我想它應該是mail.myhost.com。如果是這樣,則在格式化字符串中刪除「@」。

+0

啊,我沒有意識到@是字面的。我認爲它連接了字符串。謝謝,那有效。 – JDerringer