У меня огромный список идентификаторов электронной почты, и я должен отфильтровать все действительные идентификаторы электронной почты, действительные средства действительно существуют или нет.
Я пытаюсь реализовать smtplib
для этого, но я не уверено правильном пути.Это дает случайный результат для того же идентификатора электронной почты, который не существует (я проверил вручную), но он показывает, что иногда существует, а иногда не выходит.
Есть ли какой-нибудь лучший или доступный метод работы?
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
, иногда существует, а иногда нет.Есть ли другой лучший способ сделать это?