WinError 10060 Попытка подключения не удалась, так как подключенная сторона не ответила должным образом

Я пытаюсь проверить электронную почту, отправляя запросы на SMTP-серверы. Когда я тестирую в Linux, он работает для 90% электронных писем. Когда я тестировал в Windows, я провел некоторый анализ и, примерно, в 79% электронных писем будет показана проблема WinError10060.

Я пробовал использовать VPN, прокси и даже отключать брандмауэр, но возникает та же проблема:

[WinError 10060] Попытка подключения не удалась, так как подключенная сторона не ответила должным образом через некоторое время, или не удалось установить подключение, поскольку подключенный хост не ответил

Может ли это быть из-за брандмауэра в маршрутизаторе или интернет-провайдера, блокирующего порт? Но в то же время на 21% писем я получаю ответы вроде 250, 550 и т. д.

Вот код:

        for email in rows:
            email = email[0]
            start = time.time()

            if(email[-3:] == 'png'):
                pass
            else:
                counter += 1
                maildomain = email.split("@")[-1]
                nstoken = "mail exchanger = "
                mailserver = ""
                mailservers = []

                # Checking for domain names
                # Command: nslookup -type=mx [mx server here]
                plines = os.popen("nslookup -type=mx " + maildomain).readlines()
                for pline in plines:
                    if nstoken in pline:
                        mailserver = pline.split(nstoken)[1].strip()
                        # No need this line in Windows environment
                        mailserver = mailserver.split(" ")[-1]
                        mailservers.append(mailserver)

                invalid_emails = [550, 551, 553]
                cannot_verify_emails = [450, 451, 452]

                if mailservers == []:
                    email_result = "Invalid"
                    code_result = 000
                    print("No mail servers found")

                else:
                    i = mailservers[0]
                    print("i: ", mailservers[0])
                    try:
                        # timeout = 10
                        # socket.setdefaulttimeout(timeout)
                        s = smtplib.SMTP(i)

                        # Identifying to an ESMTP server
                        # Command helo hi / ehlo hi
                        rep1 = s.ehlo()
                        print("rep1: ", rep1)

                        if rep1[0] == 250:
                            rep2 = s.mail("[email protected]")
                            print("rep2: ", rep2)
                            if rep2[0] == 250:
                                rep3 = s.rcpt(email)
                                print("rep3: ", rep3)
                                if rep3[0] == 250:
                                    print(email, " is valid, " + str(rep3[0]))
                                    email_result = "Valid"
                                elif rep3[0] in cannot_verify_emails:
                                    print(email, " verification not allowed" + str(rep3[0]))
                                    email_result = "Server disallows verification or user mailbox is currently unavailable"
                                elif rep3[0] in invalid_emails:
                                    print(email, " doesn't exist " + str(rep3[0]))
                                    email_result = "Invalid"
                                else:
                                    print(email, " response, " + str(rep3[0]))
                                    email_result = "Other response"
                                code_result = str(rep3[0])
                            else:
                                print("rep2: s.rcpt not working")
                                email_result = "Other response"
                        else:
                            print("rep1: s.mail not working")
                            email_result = "Other response: Probably IP Blacklisted"
                        s.quit()
                    except socket.timeout:
                        email_result = "Socket Timeout Exception"
                        code_result = 000
                        print("Socket Timeout")
                        pass
                    except Exception as e:
                        email_result = str(e)
                        code_result = 000
                        print(e)

person Bese    schedule 17.07.2018    source источник
comment
Вы когда-нибудь догадывались об этом?   -  person Stephen    schedule 21.07.2018
comment
Они не позволяют мне получить доступ к маршрутизатору, но это должна быть проблема с заблокированным портом SMTP (либо в маршрутизаторе, либо от интернет-провайдера, поскольку я слишком много пытался отправлять запросы). Но я решил выполнить скрипт в экземпляре EC2 AWS. Для этого мне нужно было связаться с AWS и попросить их снять ограничения на порт SMTP для моего экземпляра. После того, как они сняли ограничения, у меня не было проблем с выполнением кода! Я надеюсь, что это поможет и вам.   -  person Bese    schedule 23.07.2018