Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Python Python
10.06.2026

Как отправлять email-рассылки через Python с задержкой между письмами

Массовые email-рассылки часто упираются не в саму верстку письма, а в техническую отправку.

Если отправить большое количество писем сразу, почтовый сервер может посчитать такую активность подозрительной: часть писем не уйдет, отправка будет временно ограничена, а аккаунт отправителя может попасть под дополнительные проверки.

Для небольших рабочих рассылок можно использовать простой Python-скрипт, который отправляет HTML-письма через SMTP не одним большим залпом, а постепенно — по одному письму с паузой между отправками.

В моем случае скрипт делает задержку от 3 до 5 минут между письмами. За счет этого рассылка выглядит более аккуратно для почтового сервера и снижается риск блокировки из-за резкого массового отправления.

Скачать Python скрипт отправки email рассылки

Для чего нужен такой скрипт рассылки

Скрипт подходит для небольших email-рассылок по своей базе контактов:

  • рассылка клиентам коммерческого предложения;
  • уведомление постоянных клиентов о новой услуге;
  • отправка HTML-письма по списку адресов;
  • тестирование email-шаблона перед запуском полноценной рассылки;
  • ручная B2B-рассылка без сложных сервисов email-маркетинга.

Это не замена крупным email-платформам с аналитикой, сегментами, автоматическими цепочками и полноценной отпиской. Но для небольшой рабочей рассылки такой вариант может быть удобным: все файлы лежат рядом, логика понятна, а запуск выполняется одной командой.

Какая проблема решается

Основная проблема массовых рассылок — попытка отправить слишком много писем за короткое время.

Например, если в списке 100 адресов и скрипт пытается отправить все письма за несколько секунд, SMTP-сервер может ограничить отправку. Почтовые сервисы защищаются от спама, поэтому резкая активность часто выглядит подозрительно.

В этом скрипте используется другой подход:

  • берется первый адрес из списка;
  • формируется HTML-письмо;
  • письмо отправляется через SMTP;
  • после отправки скрипт ждет случайное время;
  • только потом переходит к следующему получателю.

Задержка задается в конфиге. По умолчанию это промежуток от 180 до 300 секунд, то есть от 3 до 5 минут.

Такой способ не гарантирует стопроцентную доставку во входящие, потому что на доставляемость влияют домен, репутация отправителя, SPF, DKIM, DMARC, содержание письма и реакция получателей. Но он помогает избежать самой грубой ошибки — мгновенной отправки большого количества писем подряд.

Из каких файлов состоит рассылка

В проекте используются четыре основных файла:

  • send_yandex_mail.py — основной Python-скрипт отправки;
  • config.ini — настройки SMTP, отправителя, темы и задержек;
  • recipients.txt — список email-адресов получателей;
  • template.html — HTML-шаблон письма.

Такая структура удобна тем, что код рассылки отделен от настроек, списка получателей и самого письма. Чтобы отправить другую рассылку, не нужно переписывать скрипт: достаточно заменить тему письма, HTML-шаблон и список адресов.

Настройка SMTP

Основные параметры указываются в файле config.ini. Там задается SMTP-сервер, порт, логин, пароль приложения, имя отправителя, email отправителя и тема письма.


[smtp] 
host = smtp.example.com 
port = 465 
use_ssl = true 
username = your-smtp-login@example.com 
password = YOUR_SMTP_APP_PASSWORD 
[message] 
subject = Предложение по разработке сайта 
from_email = sender@example.com 
from_name = NIKOVIT 
[sending] 
delay_min_seconds = 180 
delay_max_seconds = 300 

Для Яндекс Почты обычно нужен не обычный пароль от почтового ящика, а отдельный пароль приложения. Это безопаснее и правильнее для подключения внешних программ.

Список получателей

Получатели хранятся в файле recipients.txt. Каждый адрес указывается с новой строки:


client1@example.com
client2@example.com 
client3@example.com 

Пустые строки игнорируются. Также можно оставлять комментарии через символ #.

Скрипт дополнительно проверяет адреса: если email указан некорректно, отправка не начнется, а в консоли появится сообщение об ошибке.

HTML-шаблон письма

Само письмо хранится в файле template.html. Это обычный HTML-шаблон email-письма: с таблицами, inline-стилями, кнопками, текстом и ссылками.

Для email-рассылок лучше использовать простую и надежную верстку:

  • табличную структуру;
  • inline-стили;
  • адаптацию под мобильные устройства;
  • понятный preheader;
  • одну основную кнопку действия;
  • короткий и ясный текст письма.

Важно помнить, что email-клиенты отображают HTML не так, как обычные браузеры. Поэтому не стоит использовать сложные CSS-эффекты, JavaScript, нестандартные шрифты и тяжелую верстку.

Проверка рассылки без отправки

Перед настоящей отправкой лучше запустить тестовый режим:

python .\send_yandex_mail.py --dry-run 

В этом режиме скрипт проверяет конфиг, список адресов и HTML-шаблон, показывает ход выполнения, но не подключается к SMTP и не отправляет письма.

Это удобно, потому что можно заранее найти ошибки: неправильный путь к файлу, пустой список получателей, некорректный email, не заполненный SMTP-логин или отсутствующий шаблон.

Запуск настоящей отправки

После проверки рассылку можно запустить обычной командой:

python .\send_yandex_mail.py 

После запуска скрипт показывает в консоли:

  • количество получателей;
  • тему письма;
  • отправителя;
  • задержку между письмами;
  • номер текущего письма;
  • сколько писем отправлено;
  • сколько осталось;
  • примерное оставшееся время;
  • ошибки, если они возникли.

Если письмо не удалось отправить с первого раза, скрипт делает повторные попытки. Количество повторов также задается в конфиге.

Почему задержка 3–5 минут лучше мгновенной отправки

При мгновенной отправке десятков или сотен писем SMTP-сервер может решить, что идет подозрительная массовая активность. Особенно если домен новый, ящик раньше не использовался для рассылок или письма отправляются на холодную базу.

Задержка между письмами делает процесс более плавным. Скрипт не нагружает SMTP-сервер резким потоком сообщений, а отправляет письма постепенно.

Например, если в базе 20 адресов, при паузе 3–5 минут такая рассылка будет идти примерно 1–1,5 часа. Это медленнее, чем отправить все сразу, но зато аккуратнее и безопаснее для почтового аккаунта.

Что еще влияет на доставляемость писем

Одна только задержка не решает все проблемы email-доставки. Чтобы письма лучше доходили до получателей, нужно учитывать и другие факторы:

  • у домена должны быть настроены SPF, DKIM и DMARC;
  • адрес отправителя должен выглядеть доверенно;
  • тема письма не должна быть похожа на спам;
  • в письме не должно быть слишком много агрессивных продаж;
  • нужно использовать только легальную базу получателей;
  • получатель должен понимать, почему он получил письмо;
  • в письме желательно указать способ отказаться от дальнейших сообщений.

Скрипт — это технический инструмент. Но качество рассылки зависит не только от кода, а еще от базы, содержания письма и репутации отправителя.

Кому подойдет такой вариант

Такой скрипт хорошо подходит для небольшого бизнеса, разработчиков, фрилансеров и компаний, которым нужно периодически отправлять аккуратные HTML-письма по ограниченному списку контактов.

Например:

  • разослать клиентам информацию о новой услуге;
  • отправить коммерческое предложение по своей базе;
  • уведомить клиентов об изменениях на сайте;
  • пригласить на мероприятие или вебинар;
  • протестировать HTML-письмо перед запуском через сервис рассылок.

Когда лучше использовать сервис email-рассылок

Если база большая, нужны красивые отчеты, открываемость, клики, сегментация, автоматические цепочки, формы подписки и полноценная система отписок, лучше использовать специализированный сервис email-маркетинга.

Python-скрипт удобен именно для простых задач: подготовить письмо, указать список адресов, запустить отправку и контролировать процесс в консоли.

Вывод

Простой скрипт на Python может закрыть задачу небольшой HTML-рассылки без сложных сервисов и лишней ручной работы.

Главное преимущество такого подхода — постепенная отправка писем с задержкой 3–5 минут. Это помогает избежать ситуации, когда большая рассылка отправляется одномоментно и блокируется почтовым сервером из-за подозрительной активности.

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

В итоге получается простой и понятный инструмент: HTML-шаблон письма, список получателей, SMTP-настройки и контролируемая отправка с паузами между сообщениями.

Не получается самостоятельно?

Помогу разобраться с настройкой, исправить ошибки и реализовать решение под ваш проект.

Доработка сайта на 1С Битрикс

Доработка сайта на 1С Битрикс — это добавление функционала, исправление ошибок, интеграции с CRM и оптимизация работы сайта. 

Повышает удобство для пользователей и эффективность бизнеса.

Подробнее
1 просмотров
Где заказы?

Почему один сайт стабильно приносит заявки, а другой годами просто «висит в интернете»?

В телеграм-канале «Где заказы?» я разбираю реальные ошибки бизнеса, SEO, сайты, рекламу, воронки продаж и показываю, почему компании теряют клиентов и как это исправить.

Без инфоцыганства и мотивационных цитат — только практика, кейсы и рабочие решения для бизнеса и веб-разработки.

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться