2017-02-09 45 views
0

我嘗試驗證的電子郵件和我有一些困難:的Python:使用到的smtplib郵件驗證

我經常看到一些錯誤,例如

dns.resolver.NoAnswer: The DNS response does not contain an answer to the question: siemens.ru. IN MX 

是什麼意思?我無法檢查電子郵件或其他?或者我應該再試一次?

smtplib.SMTPServerDisconnected: Connection unexpectedly closed 

有沒有辦法解決這個問題?它經常出現。

dns.resolver.NXDOMAIN: None of DNS query names exist: aruanaestetik.com., aruanaestetik.com. 

如果我得到這個錯誤,我應該跳過這個域的電子郵件,對吧?

另外,當我嘗試獲得mxrecords,有時他們的數量不止一個。我應該使用它的每一個來檢查電子郵件或我可以使用一個隨機的嗎?

我用下面的代碼來做到這一點:

resolver = dns.resolver.Resolver() 
    resolver.timeout = 60 
    resolver.lifetime = 60 
    mx_records = resolver.query(dom, 'MX') 
    mxRecord = str(mx_records[0].exchange) 
    host = socket.gethostname() 
    server = smtplib.SMTP() 
    server.set_debuglevel(0) 
    server.connect(mxRecord) 
    server.helo(host) 
    server.mail('[email protected]') 
    code, message = server.rcpt(str(addressToVerify)) 
    server.quit() 

也只說明瞭我的郵件在server.mail(),但我嘗試登錄那裏和檢查電子郵件後,卻沒有得到任何結果,所以我登出。爲什麼會發生?

回答

1

會有在我的答案中沒有代碼,我想描述這個過程並專注於錯誤處理。

的電子郵件地址是形式[email protected]

的要檢查域的一部分,你必須從DNS獲得的MX記錄。如果(並且只有)沒有MX,則應該使用A記錄。不過,我認爲這種情況是錯誤配置的郵件系統。

在進行DNS查找時,可能會出現兩組錯誤:瞬時錯誤(例如超時)和持久錯誤(例如NXDOMAIN)。在出現瞬時錯誤的情況下,查找應該稍後重複。

通常有多個MX記錄。他們有一個數字優先級。數字越小=優先級越高。郵件始終從較高的MX號碼到較低的MX號碼。

爲了檢查地址的用戶部分,您必須聯繫具有最高優先級的服務器。所有其他人都是備份服務器,並且他們無法訪問用戶數據庫是很常見的。他們只是接受所有郵件的自己的域名。

無論出於何種原因,您的發件人地址都有可能被拒絕。使用空的地址<>保留給錯誤消息。

同樣,在與SMTP服務器通信時存在兩組錯誤。幸運的是,SMTP響應有一個3位數的代碼。第一位數字爲2表示成功,4表示暫時性錯誤(稍後重試),5表示永久性失敗。

最後一點:如果你不打算真正發送郵件,請在退出前執行SMTP RSET。

+0

感謝您的解釋。但是「A記錄」是什麼? –

+0

而且有什麼方法可以用'smtplib.SMTPServerDisconnected:連接意外關閉'「打」? –

+0

@PetrPetrov「A」記錄是一種將名稱映射到IP ** A **地址的DNS記錄,更準確地說是IPv4地址。相應的IPv6「A」記錄被命名爲「AAAA」。 [https://en.wikipedia.org/wiki/List_of_DNS_record_types] – VPfB

1

您是否手動檢查mx

好像端口25是不開放的連接,並沒有MX記錄可尋,所以它返回一個做手工檢查時no mx record exists的錯誤aruanaestetik.com一個得到消息no mx recorf found

+0

不,我使用'dns.resolver.query(domain,'MX')'來做到這一點。你能解釋一下,如果域名包含很多'mx',我是否可以檢查每封電子郵件? –

+0

dns.resolver.query(domain,'MX')返回當你沒有找到mx和/或關閉p25時你詢問的錯誤,是的,你可以檢查每一個電子郵件,但只有一個可能允許登錄時,你嘗試發送 – minime

相關問題