我们如何通过程序检查任何电子邮件Id是否可交付(存在或不存在)?

2024-09-28 19:21:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的电子邮件ID列表,我必须过滤掉所有有效的电子邮件ID,有效的手段真的存在或不存在。你知道吗

我正在尝试为此实现smtplib,但我不确定正确的方法。它给相同的电子邮件id随机结果,这是不存在的(我已经手动检查),但它显示有时存在,有时不退出。你知道吗

有没有更好的方法或工作方法?你知道吗

import socket
import smtplib
import dns.resolver

def get_connection_handler():
    try:
        # Get local server hostname
        # host = socket.gethostname()
        host = socket.getfqdn()
        username = 'myemilid@gmail.com' #used with working email_id
        password = 'password' #password

        # SMTP lib setup (use debug level for full output)
        server = smtplib.SMTP('smtp.gmail.com', 587, timeout=30)
        server.set_debuglevel(1)

        server.ehlo()
        server.starttls()
        server.login(username, password)
        return host, server
    except Exception as e:
        return None, None


def validate_email_id(server, host, email_list):

    for each_email_id in email_list:
        records = dns.resolver.query(each_email_id.split('@')[-1], 'MX')
        mxRecord = records[0].exchange
        mxRecord = str(mxRecord)

        # SMTP Conversation
        server.connect(mxRecord)
        server.helo(host)

        server.mail('myemailid@gmail.com')
        addressToVerify = 'ramanzzzzzooo@somedomain.com'
        code, message = server.rcpt(str(addressToVerify))


email_list = ['email_id1@somedomain1.com','email_id1@somedomain2.com','email_id1@somedomain5.com','email_id1@somedomain4.com','email_id1@somedomain3.com',]


server,host = get_connection_handler()
validate_email_id(server,host,email_list)

它给出了相同email_id的随机结果,有时存在,有时不存在。 还有其他更好的方法吗?你知道吗


Tags: 方法importcomidhostserver电子邮件email
2条回答

您可以检查语法是否正确,只需查找RFC,阅读它并运行!唯一正常的检查是随便什么。随便什么。所以vaildate建议使用@Nick Predey这样的软件包,或者只检查@and。。你知道吗

你问题的第二部分很有趣。再也没有方法检查电子邮件地址是否真的存在了。在早期,有手指测试用户是否存在于主机上。如今,该协议不再用于对付垃圾邮件(https://en.wikipedia.org/wiki/Finger_protocol

validate emailpython包可以在这种情况下帮助您。根据文件,它是用来检查电子邮件是否“有效,格式正确,确实存在。”

在使用pip install validate_email安装之后,您可以这样使用它:

from validate_email import validate_email
is_valid = validate_email('example@example.com')

如果电子邮件有效,则返回true;如果无效,则返回false。你知道吗

相关问题 更多 >