我想發送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.COM
或1 ASPMX.L.GOOGLE.COM
。 MX服務器前面的數字表示優先級。這可以是一個兩位數字或單個數字,這是我的問題。因爲dns.resolver不會返回一個元組,例如。 (priority, server)
,我如何去掉字符串的單個或兩個數字的優先級。現在我假設優先級是一個雙位數字。
按空間分割? – devnull
按空格分割,然後進行雙重檢查以確保分割在列表的第一個索引中創建數字。你也可以很容易地檢查字符串的前兩個索引... –
我真的很慚愧,我沒有想到這個......好吧,時間做一個新的帳戶,並開始治療,試圖忘記這個職位 – David