连接MX服务器以接收欢迎消息并非总是可能(Python套接字编程)

2024-04-24 18:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着编写一些代码,从给定的电子邮件中获取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")

先谢谢你


Tags: nameimport程序rehostdnsemailcount