У меня проблемы с проверкой массового списка адресов электронной почты. Проблема связана с кодом ошибки «Отказано в соединении». При каждой проверке электронной почты возвращается Соединение отклонено. С чего бы это? Можете ли вы дать мне решение? Нет проблем с проверкой синтаксиса электронной почты
Приведенный ниже код предназначен только для правильной области программы, т.е. проверки 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
Спасибо заранее.