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

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

Нет прав для скачивания

ElonMusk

Проверенные
Сообщения
498
Реакции
27
Баллы
11,030
ElonMusk добавил(а) новый ресурс:

Проверка почты на валидность smtp.bz - Проверяем свою базу аккаунтов сервисом smtp.bz

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

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

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

и тут:

Python:
# Ваш ключ API...

Узнать больше об этом ресурсе...
 
Плагин бы пофиксили :(
 
Проверка как бы идет
Вот только абсолютно все id выдают одно и тоже вот пример что в email_validation.log
Код:
2023-11-12 13:47:36,254: Статус пользователя с ID 752 обновлен на 'email_bounce'
2023-11-12 13:47:38,612: Ошибка запроса для [email protected]: Код состояния 404
2023-11-12 13:47:38,613: Проверка [email protected]: не валиден
2023-11-12 13:47:38,636: Статус пользователя с ID 753 обновлен на 'email_bounce'
2023-11-12 13:47:40,997: Ошибка запроса для [email protected]: Код состояния 404
2023-11-12 13:47:40,998: Проверка [email protected]: не валиден
2023-11-12 13:47:41,021: Статус пользователя с ID 754 обновлен на 'email_bounce'
2023-11-12 13:47:43,369: Ошибка запроса для [email protected]: Код состояния 404
2023-11-12 13:47:43,370: Проверка [email protected]: не валиден
2023-11-12 13:47:43,393: Статус пользователя с ID 755 обновлен на 'email_bounce'
2023-11-12 13:47:45,750: Ошибка запроса для [email protected]: Код состояния 404
2023-11-12 13:47:45,751: Проверка [email protected]: не валиден
Если вставить имейл на выдает такое

1699807972313.jpg
 
Я не знаю как добавить обновить пост с фиксом, напишу сюда
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()
            return response_data.get('result')
        except json.decoder.JSONDecodeError:
            logging.error(f"Ошибка декодирования JSON для {email}: {response.text}")
            return False
    else:
        # Логирование всех ошибок с подробной информацией
        logging.error(f"Ошибка {response.status_code} для {email}. URL: {url}, Заголовки: {headers}, Тело ответа: {response.text}")
        return False




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

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

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

    is_valid = check_email(email, api_key)

    if is_valid and user_state == 'email_bounce':
        # Если пользователь валиден и имеет статус email_bounce, изменить статус на 'активный'
        update_query = "UPDATE xf_user SET user_state = 'valid' WHERE user_id = %s"
        cursor.execute(update_query, (user_id,))
        logging.info(f"Статус пользователя с ID {user_id} и почтой {email} изменен на 'активный'")
        print(f"Статус пользователя с ID {user_id} и почтой {email} изменен на 'активный'")
    elif not is_valid:
        # Если пользователь не валиден, обновить статус на email_bounce
        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} обновлен на 'email_bounce'")
        print(f"Статус пользователя с ID {user_id} и почтой {email} обновлен на '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()
 
На бесплатном тарифе я понял никак не пройти валидацию?
Только можно отправлять у них 15000 писем каждый месяц
11.jpg
А вот на валидацию 0 проверок 🥲
12ц.jpg
 
Последнее редактирование:
starter80, да, они дают сервис почтовый, для отправки писем с лимитом 1500шт в месяц, а пакетный валидатор стоит денег.
Но я посмотрел в интернете, это самый дешевый вариант, дешевле не встречал.
Но если найдете дешевле и с API, дайте знать, напишу скрипт)
 
starter80, да, они дают сервис почтовый, для отправки писем с лимитом 1500шт в месяц
А разве не 15000?
11-jpg.149972
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу