Python:如何更快地检查带有smtplib的电子邮件

时间:2017-02-03 14:37:29

标签: python email smtp smtplib

我需要检查很多电子邮件,成千上万的电子邮件。 我使用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

1 个答案:

答案 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()

看起来像这样