我想发送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)
,如何删除字符串的单位或双位优先级。现在我假设优先级是一个两位数。
答案 0 :(得分: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']
。为此,你可以这样做:
{{1}}