簡體   English   中英

Google App Engine Python:如何在沒有代理服務器的情況下驗證電子郵件地址?

[英]google app engine python: how to validate an email address without a proxy server?

嘗試創建電子郵件驗證,而無需通過此鏈接使用stmplib發送電子郵件

http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/

由於我還沒有編寫任何代碼並試圖了解發生了什么。

似乎您必須使用mailgun之類的付費代理服務器之一。 (如果我錯了糾正我)

我們還有其他方法可以驗證電子郵件地址嗎?

可以使用此python代碼實現使用的方法,您需要安裝dnspython並調用verify_mail(mail)

import re
import smtplib
import dns.resolver # from http://www.dnspython.org/

def get_mx(domain):
    for x in dns.resolver.query(domain, 'MX'):
        return x.to_text().split()[1].strip('.')

def verify_mail(mail):
    domain=re.findall('@(.*)', mail)[0]
    mx=get_mx(domain)
    smtp=smtplib.SMTP(mx)
    i,m=smtp.connect(mx)
    i,m=smtp.helo()
    i,m=smtp.verify(target)
    if i==250: return True
    else:
        i,m=smtp.mail('myemail@gmail.com')
        i,m=smtp.rcpt(target)
        if i==250: return True
        else: return False

if __name__=='__main__':
    print verify_mail('banana@yahoo.com')

GAE尚不支持此方法。 所描述的方法要求您連接到SMTP服務器,並詢問服務器是否存在電子郵件地址。 這需要GAE上的出站套接字支持,該支持尚不可用 (除非通過其受信任的測試人員計划接受了您)。 您需要出站套接字支持才能在域上進行DNS查找查詢以獲取SMTP服務器連接以及實際連接到SMTP服務器。

您還應該意識到,此方法不適用於所有SMTP服務器實現。 某些服務器可能不響應這些類型的請求。

我認為,現在您必須滾動自己的實現以通過HTTP進行工作,或支付可以為您完成此操作的服務。

更新:

從1.7.7 SDK開始, Sockets API已以實驗狀態發布。 盡管它們明確禁止連接到傳出套接字上的端口25(smtp)。 這將極大地禁止您(通過端口587)可以連接多少個SMTP服務器來驗證給定的電子郵件地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM