Массовая проверка подлинности электронной почты Python 3 отклонена - PullRequest
0 голосов
/ 27 апреля 2018

У меня проблемы с проверкой массового списка адресов электронной почты. Проблема связана с кодом ошибки «Отказано в соединении». При каждой проверке электронной почты возвращается Соединение отклонено. С чего бы это? Можете ли вы дать мне решение? Нет проблем с проверкой синтаксиса электронной почты Приведенный ниже код предназначен только для правильной области программы, т.е. проверки mxrecord. Я использую Intellij Idea, Python 3.4.3 и tkinter для графического интерфейса.

def handle_accuracy(self):
    for email in self.emails:
        # See if email string contains ampersand and period.
        if (email.find('@') < 0) or (email.find('.') < 0):
            print("Email not syntactically correct.")
            self.inaccurate_emails.append(email)
        else:
            email_exists = self.check_existence(email)
            if email_exists:
                print("Email is accurate and exists.")
                self.accurate_emails.append(email)
            else:
                print("Email is syntactically correct but couldn\'t be found")
                self.inaccurate_emails.append(email)

def check_existence(self, email):
    at_pos = email.find('@')
    mx_name = email[(at_pos + 1):]

    # Connect to email server and get name of SMTP server
    records = dns.resolver.query(mx_name, 'MX')

    for record in records:
        print(record.exchange)

    mxRecord = records[0].exchange
    mxRecord = str(mxRecord)

    host = socket.gethostname()

    # Setup an exception block to handle issues with connection.
    try:
        server = smtplib.SMTP(mxRecord)
    except TimeoutError:
        print("Timeout")

        # Indicate to calling function that email cannot be found.
        return False
    except ConnectionRefusedError:
        print("Connection Refused")
        return False
    server.set_debuglevel(0)

    # Setup another exception block to handle further issues with connection.
    try:
        server.connect()
        server.helo(host)   #needs to have a helo rather than hello
        server.mail(email)
        code, message = server.rcpt()
    except TimeoutError:
        print("Timeout")
        server.quit()
        return False
    except ConnectionRefusedError:
        print("Connection Refused")
        server.quit()
        return False

    server.quit()

    if code == 250:
        return True
    else:
        return False

Спасибо заранее.

...