2014-04-25 126 views
0

我想發送Direct-To-MX郵件。要檢索正確的MX服務器,我使用以下功能。從一個或兩個數字中刪除一個字符串

import dns.resolver 

def MX(): 
    domain = self.to.split('@')[1] # self.to is an email address 
    mx = resolve_MX(domain) 
    s = smtplib.SMTP(mx, 25) 
    return s 

def resolve_MX(domain): 
    MXlist = [] 
    for mx in dns.resolver.query(domain, 'MX'): 
     MXlist.append(mx) 
    rand = randint(0,len(MXlist)-1) 
    mx_record = MXlist[rand] 
    return str(mx_record)[3:] 

解析器返回20 ALT1.ASPMX.L.GOOGLE.COM1 ASPMX.L.GOOGLE.COM。 MX服務器前面的數字表示優先級。這可以是一個兩位數字或單個數字,這是我的問題。因爲dns.resolver不會返回一個元組,例如。 (priority, server),我如何去掉字符串的單個或兩個數字的優先級。現在我假設優先級是一個雙位數字。

+2

按空間分割? – devnull

+1

按空格分割,然後進行雙重檢查以確保分割在列表的第一個索引中創建數字。你也可以很容易地檢查字符串的前兩個索引... –

+0

我真的很慚愧,我沒有想到這個......好吧,時間做一個新的帳戶,並開始治療,試圖忘記這個職位 – David

回答

1

由於您的字符串由空格分隔成兩個部分,你可以這樣做:

final_str = received_string.split(' ') 

>>> print final_str 
['20', 'ALT1.ASPMX.L.GOOGLE.COM'] 

而且,如果您打算在數字的方面來進行優先比較,這是更好如果您的優先號碼是int而不是string。爲此,您可以這樣做:

final_str = received_string.split(' ') 
final_str[0] = int(final_str[0]) 

>>> print final_str 
[20, 'ALT1.ASPMX.L.GOOGLE.COM'] 
+0

謝謝,我真的很慚愧,我沒有想到這一點。我不使用優先權。 – David

+0

@David,很高興能幫到你!祝你好運 – sshashank124

相關問題