我尝试使用以下脚本验证是否存在电子邮件地址:
telnet gmail-smtp-in.l.google.com 25
helo example.com
mail from: <me@example.com>
rcpt to: <somenonexistinguser@gmail.com>
如果我有一个需要验证的电子邮件地址列表,我怎么能自动完成这个过程?我需要根据返回值(550或220)判断它是否有效,然后退出然后转到下一个电子邮件地址。
答案 0 :(得分:0)
像greet-delays和multi-line smtp replies这样的SMTP怪癖难以使用telnet自动化。我建议您使用您选择的编程语言中符合RFC的SMTP库,例如python的smtplib。请记住,您需要处理的返回代码多于550和220。例如,4xx代码经常发生(灰名单,overquota,......)
但请注意,这不是验证电子邮件地址的可靠方法。许多服务器在SMTP阶段接受其托管域中的任何地址,然后将其退回。 此外,一些邮政局长认为这些SMTP-Probes是滥用的,可能导致黑名单。
答案 1 :(得分:0)
根据您的用例,您可以通过多种方式进行操作。
尝试使用telnet可能遇到的一些问题是IP地址被阻止,并且响应电子邮件的域不同,响应码也不同。
如果您有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
如果您拥有自动化的工作流程,则可以通过编程方式调用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'