0

このリンクからstmplibを使用して電子メールを送信せずに電子メール検証を作成しようとしています

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

私はまだコードを書いていないので、何が起こっているのかを理解しようとしています。

mailgun などの有料プロキシ サーバーのいずれかを使用する必要があるようです。(間違っていたら訂正してください)

メールアドレスを検証する他の方法はありますか?

4

2 に答える 2

2

使用されるメソッドは、dnspython をインストールして verify_mail(mail) を呼び出す必要があるこの python コードを使用して実装できます。

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')
于 2013-04-08T14:10:09.680 に答える
2

このメソッドは、GAE ではまだサポートされていません。説明されている方法では、SMTP サーバーに接続して、電子メール アドレスが存在するかどうかをサーバーに問い合わせる必要があります。これには、GAE でのアウトバウンド ソケット サポートが必要ですが、これはまだ利用できません(信頼できるテスター プログラムを通じて受け入れられない限り)。接続先の SMTP サーバーを取得するためにドメインで DNS ルックアップ クエリを実行するだけでなく、実際に SMTP サーバーに接続するには、アウトバウンド ソケットのサポートが必要です。

また、この方法はすべての SMTP サーバーの実装で機能するわけではないことにも注意してください。一部のサーバーは、これらのタイプの要求に応答しない場合があります。

今のところ、HTTP 経由で動作するように独自の実装を展開するか、これを行うサービスに料金を支払う必要があると思います。

アップデート:

1.7.7 SDK の時点で、Sockets APIは実験的な状態でリリースされています。ただし、送信ソケットでポート 25 (smtp) に接続することは明示的に禁止されています。これにより、特定の電子メール アドレスを確認するために (ポート 587 経由で) 接続できる SMTP サーバーの数が大幅に制限されます。

于 2013-04-08T15:02:23.877 に答える