Подключение к MX-серверу для получения приветственного сообщения не всегда возможно (Python Socket Programming) - PullRequest
0 голосов
/ 07 апреля 2019

Я пытался написать какой-то код, который получает MX-сервер по заданной электронной почте, затем подключается к нему и печатает приветственное сообщение. Дело в том, что моя программа не всегда работает. Если я попробую на нескольких компьютерах, например на моем, программа зависнет на этапе s.connect (). Для другого примера, на компьютере моего друга, эта программа работает нормально. Я пытаюсь выполнить его с "python mx.py example@gmail.com".

import sys
import socket
import dns.resolver
import re

email_count = len(sys.argv)

for i in range(1, email_count):
    email = sys.argv[i]
         if not re.match(r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", email):
        print(email, "is not valid e-mail.")
        continue

    print(email, "is valid e-mail.")
    domain = email.rsplit('@', 1)[-1]
    for x in dns.resolver.query(domain, 'MX'):

        host_name = str(x.exchange)
        host = socket.gethostbyname(host_name)
        port = 25
        address = (host, port)
        print("\nHost:", host_name, "IP:", host)

        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.connect(address)
            msg = s.recv(1024)
            s.close()

        print("--begin of server output--\n")
        print(msg.decode('ascii'))
        print("--end of server output--\n")

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...