Иконка ресурса

Проверка почты на валидность smtp.bz 2023-11-11

Нет прав для скачивания
Совместимость с XenForo
  1. 2.0
  2. 2.1
  3. 2.2
Скрипт на Python, для запуска внутри VPS/VDS
Заполняем данные от своей базы данных, а также пишем ключ от api сервиса smtp.bz
Запускаем, и ждем.

Не валидным адресам ставится статус email_bounce
Целью была, проверка всех аккаунтов, перед массовой рассылкой почт.

Настройки тут:
Python:
# Подключение к базе данных XenForo
db = mysql.connector.connect(
    host="localhost",
    user="rootx",
    password="password",
    database="database"
)

и тут:

Python:
# Ваш ключ API SMTP.BZ
api_key = "key"


Python:
import requests
import mysql.connector
import time
import logging
import json

# Настройка логирования
logging.basicConfig(filename='email_validation.log', level=logging.INFO, 
                    format='%(asctime)s: %(message)s')

# Подключение к базе данных XenForo
db = mysql.connector.connect(
    host="localhost",
    user="user",
    password="password",
    database="database"
)

cursor = db.cursor()

# Получение списка адресов электронной почты с их статусами
cursor.execute("SELECT user_id, email, user_state FROM xf_user")
emails = cursor.fetchall()

# Загрузка уже обработанных ID
with open("processed_ids.txt", "a+") as f:
    f.seek(0)
    processed_ids = set(f.read().splitlines())

# Функция для проверки валидности email через API SMTP.BZ
def check_email(email, api_key):
    url = f"https://api.smtp.bz/v1/check/email/{email}"
    headers = {'Authorization': api_key}
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        try:
            response_data = response.json()
            # Используем ключ 'result' для определения валидности
            return response_data.get('result')
        except json.decoder.JSONDecodeError:
            logging.error(f"Ошибка декодирования JSON для {email}: {response.text}")
            return False
    else:
        logging.error(f"Ошибка запроса для {email}: Код состояния {response.status_code}")
        return False

# Ваш ключ API SMTP.BZ
api_key = "key"

# Интервал проверки в секундах
check_interval = 2

# Проверка и обновление статусов в базе данных
for user_id, email, user_state in emails:
    if str(user_id) in processed_ids or user_state == 'email_bounce':
        logging.info(f"Пользователь с ID {user_id} и статусом {user_state} пропущен")
        continue

    is_valid = check_email(email, api_key)
    logging.info(f"Проверка {email}: {'валиден' if is_valid else 'не валиден'}")
    print(f"Проверка {email}: {'валиден' if is_valid else 'не валиден'}")

    if not is_valid:
        # Обновление статуса пользователя в базе данных
        update_query = "UPDATE xf_user SET user_state = 'email_bounce' WHERE user_id = %s"
        cursor.execute(update_query, (user_id,))
        logging.info(f"Статус пользователя с ID {user_id} обновлен на 'email_bounce'")
        print(f"Статус пользователя с ID {user_id} обновлен на 'email_bounce'")

    # Запись ID в файл обработанных
    with open("processed_ids.txt", "a") as f:
        f.write(f"{user_id}\n")

    # Сохранение изменений после каждой обработки
    db.commit()

    time.sleep(check_interval)

# Закрытие подключения
cursor.close()
db.close()

Возможно потребуется дополнительно установить
pip install requests mysql-connector-python
Автор
ElonMusk
Скачивания
4
Просмотры
495
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу