我需要检查很多电子邮件,成千上万的电子邮件。
我使用smtplib
来做,我有一些问题。
这需要花费太多时间(尽管我使用多处理并且通常使用32个进程)。
有时我有一些错误的电子邮件(超时)或其他错误,我没有采取任何结果。
但如果我再次执行它,我不会收到错误,但可能会收到另一封电子邮件的错误。
我在代码中做错了什么,如何改进它以获得更高的准确性和更少的错误。
def check_email(email, mxRecord):
time.sleep(2)
host = socket.gethostname()
try:
server = smtplib.SMTP()
server.set_debuglevel(0)
addressToVerify = email
server.connect(mxRecord)
server.helo(host)
server.mail('me@domain.com')
code, message = server.rcpt(str(addressToVerify))
server.quit()
if code == 250:
res_email = email
res = str(num) + ' ' + str(res_email)
print res
return res
else:
continue
except:
continue
答案 0 :(得分:0)
你只需要通过所有邮件循环使用线程......
def check_email(email, mxRecord):
time.sleep(2)
host = socket.gethostname()
for line, line 1 in itertools.izip(email, mxRecord)
try:
server = smtplib.SMTP()
server.set_debuglevel(0)
addressToVerify = email
server.connect(mxRecord)
server.helo(host)
server.mail('me@domain.com')
code, message = server.rcpt(str(addressToVerify))
server.quit()
if code == 250:
res_email = email
res = str(num) + ' ' + str(res_email)
print res
return res
else:
continue
except:
continue
m = threading.Thread(name='daemon', target=check_email(email,mxRecord))
m.setDaemon(True)
m.start()
看起来像这样