Автоматизация рутины: пишем бота на Python для автоответов на письма
📩 На Python можно легко написать бота, который будет автоматически отвечать на входящие сообщения. В статье разберём пример кода, покажем базовый сценарий и идеи для улучшения, чтобы освободить ваше время для более важных задач
Зачем это нужно в 2025? 🕒
Почта всё ещё — основной канал общения с клиентами и партнёрами. На деле 60–80% входящих — рутина: подтверждения, повторяющиеся вопросы, «добрый день, подскажите…». Бот освобождает часы в неделю, ускоряет ответ пользователю и снижает вероятность «залеживания» писем.

Что будем строить ⚙️
Мини-бот на IMAP + SMTP для базового автоответа.
Маршрутизация по ключевым словам (например, «оплата», «сотрудничество»).
Конспект «как перейти» на Gmail API (OAuth 2.0) для надёжности.
План развёртывания: cron / APScheduler, логирование, Docker.
Секьюрити-минимум: .env, App Password, ограничение частоты.
Ниже — минимальный рабочий вариант.
# pip install python-dotenv
import os, imaplib, smtplib, email
from email.mime.text import MIMEText
from dotenv import load_dotenv
load_dotenv()
IMAP = os.getenv("IMAP_SERVER", "imap.gmail.com")
SMTP = os.getenv("SMTP_SERVER", "smtp.gmail.com")
EMAIL = os.getenv("EMAIL_ADDRESS")
PASS = os.getenv("EMAIL_PASSWORD") # App Password для Gmail
def send_reply(to_addr:str, subject:str):
msg = MIMEText("Спасибо! Мы получили ваше письмо и ответим в ближайшее время.")
msg["Subject"] = f"Re: {subject or ''}".strip()
msg["From"] = EMAIL
msg["To"] = to_addr
with smtplib.SMTP_SSL(SMTP, 465) as smtp:
smtp.login(EMAIL, PASS)
smtp.sendmail(EMAIL, [to_addr], msg.as_string())
with imaplib.IMAP4_SSL(IMAP) as imap:
imap.login(EMAIL, PASS)
imap.select("INBOX")
status, data = imap.search(None, '(UNSEEN)')
ids = data[0].split()
for msg_id in ids:
_, raw = imap.fetch(msg_id, "(RFC822)")
msg = email.message_from_bytes(raw[0][1])
sender = email.utils.parseaddr(msg.get("From",""))[1]
subj = msg.get("Subject","")
if sender:
send_reply(sender, subj)
# пометить как прочитанное
imap.store(msg_id, '+FLAGS', '\\Seen')
💡 Совет: во время тестов добавьте «сухой режим» (dry-run), чтобы логировать действия вместо реальной отправки.
Умнее: ответы по ключевым словам 🧭
Простейшая логика: смотрим на тему и тело письма, выбираем шаблон ответа.
KEYMAP = {
"оплата": "По оплате: счет отправлен, сроки — 1-2 банковских дня. Если нужен акт — ответьте на это письмо.",
"сотрудничество": "Рады интересу! Напишите коротко о вашей аудитории и формате — вернёмся с предложением.",
"техподдержка": "Опишите шаги воспроизведения и пришлите скриншоты/логи — поможем оперативно."
}
DEFAULT = "Спасибо за письмо! Мы на связи и вернемся с ответом в ближайшее время."
def choose_reply(subject:str, body:str) -> str:
text = f"{subject} {body}".lower()
for key, template in KEYMAP.items():
if key in text:
return template
return DEFAULT
Можно расширить до простого «интента»: искать несколько ключей, считать «вес» совпадений и выбирать лучший шаблон.
Развёртывание и эксплуатация 🚀
Планировщик: cron,
APScheduler
или systemd-timer.Docker: закрепите версию Python и зависимостей, подключите
.env
как секрет.Логи: уровень INFO для нормальной работы и WARNING/ERROR для сбоев; отправляйте ошибки в Telegram/Slack.
Ограничение частоты: не отвечайте чаще 1 раза на адрес в сутки; ведите кэш «ответов за последние 24 часа».
A/B: тестируйте тексты автоответов и тему письма — влияет на дальнейшую коммуникацию.
Безопасность и этика 🔒
Храните секреты в
.env
, используйте App Password или OAuth 2.0, не коммитьте токены в репозиторий.Добавьте в ответ «вы получили автоответ» и способ связаться с человеком.
Ведите белый список доменов/адресов для автоматических действий; спорные письма оставляйте на ручной разбор.
Соблюдайте политику почтового провайдера и закон о персональных данных.
📊 Что может делать почтовый бот на Python
Сценарий | Что делает бот | Польза |
---|---|---|
Автоответ | «Спасибо, письмо получили» + ожидание сроков | Снимает рутину, ускоряет first response |
Фильтрация | Кладёт в папки: «оплата», «сотрудничество», «поддержка» | Инбокс без хаоса |
Пересылка | Отправляет вопросы по оплате — бухгалтеру, интеграции — техподдержке | Быстрый роутинг |
Ключевые слова | Выбирает шаблон по содержимому письма | Более уместные ответы |
Интеграция с CRM | Создаёт лид/сделку, подтаскивает контакт | Прозрачная воронка |
ИИ-ответ | Формирует текст через LLM по краткому резюме письма | Человечный тон, меньше ручной работы |

Идеи апгрейдов 💡
Резюме письма: извлекайте краткий конспект и подставляйте в ответ.
Шаблоны с переменными: имя отправителя, номер заказа, дедлайн.
Анти-петля: не отвечать на автоответы/но-реплай, проверять заголовки
Auto-Submitted
.Мультиязычность: определяйте язык письма и подбирайте шаблон.
📎 Храните шаблоны в JSON/YAML и катите изменения без релиза кода.
В Кодике мы делаем обучение программированию увлекательным и понятным: у нас есть интересные курсы с заданиями, которые помогают прокачивать навыки шаг за шагом.
А ещё у нас есть активный telegram-канал, где мы обсуждаем крутые идеи, делимся опытом и вместе разбираем задачи — учиться становится не только полезно, но и весело.
Оставьте комментарий: какой сценарий автоответов нужен именно вам — «оплата», «поддержка», «сотрудничество» или что-то своё?