【问题标题】:automate email validation using telnet使用 telnet 自动验证电子邮件
【发布时间】:2015-11-24 23:54:55
【问题描述】:

我正在尝试使用以下脚本来验证电子邮件地址是否存在:

telnet gmail-smtp-in.l.google.com 25
helo example.com
mail from: <me@example.com>
rcpt to: <somenonexistinguser@gmail.com>

既然我有一个需要验证的电子邮件地址列表,我该如何自动化这个过程?我需要根据返回值(550 或 220)确定它是否有效,然后退出然后转到下一个电子邮件地址。

【问题讨论】:

    标签: shell unix smtp telnet


    【解决方案1】:

    根据您的用例,您可以通过多种方式做到这一点。

    您在尝试使用 telnet 时可能会遇到的一些问题是 IP 被阻止和响应代码不同,具体取决于电子邮件域。

    来自 shell 的 csv

    如果您有一个 csv 文件,您可以使用 Real Email 之类的服务自动处理该文件。 例如

    while IFS='' read -r line || [[ -n "$line" ]]; do
        echo $line, `curl "https://isitarealemail.com/api/email/validate?email=$line" -H 'Authorization: bearer xxx' | jq .status`;
    done < emails-input.csv > emails-output.csv
    

    python 函数

    如果您有一个自动化的工作流程,您可以通过编程方式调用 API,例如使用这样验证的 python 函数。

    import requests
    
    email_address = "foo@bar.com"
    response = requests.get("https://isitarealemail.com/api/email/validate",
        params = {'email': email_address})
    
    response.json()['status']
    u'valid'
    

    bulk validations with real email

    automated validations using python and real email

    【讨论】:

      【解决方案2】:

      greet-delaysmulti-line smtp replies 这样的SMTP 怪癖很难使用telnet 实现自动化。我建议您在您选择的编程语言中使用符合 RFC 的 SMTP 库,例如 python 的 smtplib。请记住,您还需要处理比 550 和 220 更多的返回码。例如 4xx 代码经常发生(灰名单、超额配额、...)

      但是请注意,这不是验证电子邮件地址的可靠方法。许多服务器在 SMTP 阶段接受其托管域中的任何地址,然后将其退回。 此外,这些类型的 SMTP-Probe 被一些邮政主管认为是滥用的,可能会导致列入黑名单。

      【讨论】:

        猜你喜欢
        • 2017-07-31
        • 2019-05-28
        • 2012-03-14
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 2016-02-29
        相关资源
        最近更新 更多