ГлавнаяБлогКак управлять Outlook через Python и Claude Code на Windows
Python

Как управлять Outlook через Python и Claude Code на Windows

Научитесь управлять Outlook через Python и Claude Code на Windows без регистрации Azure-приложения. Получите готовый код для автоматизации писем.

Al
Редакция Algolitalgolit.ru
8 мин чтения30 июня 2026 г.

Как автоматизировать Outlook без API и регистрации приложений

Работаете на корпоративном Windows-компьютере, где нельзя установить расширения браузера или зарегистрировать Azure-приложение? Вы всё ещё можете управлять Outlook через Python и Claude Code. Оказывается, достаточно одного вызова COM-интерфейса, который доступен в Outlook Desktop уже 30 лет.

Что такое COM-автоматизация и как она работает

Outlook Desktop на Windows предоставляет COM-интерфейс. Любая программа на том же компьютере может подключиться к нему, если Outlook открыт и выполнен вход. Вся модель аутентификации сводится к одному условию: если Outlook работает — вы внутри.

Библиотека pywin32 оборачивает этот интерфейс в Python:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application")
inbox = outlook.GetNamespace("MAPI").GetDefaultFolder(6)

Один импорт. Один вызов Dispatch. Вы общаетесь с Outlook и имеете доступ почти ко всему, что можно сделать мышкой и клавиатурой.

Паттерн моста: CLI + JSON

Claude написал один Python-файл — outlook_bridge.py — который предоставляет команды Outlook как CLI-подкоманды и возвращает JSON. Claude Code вызывает его через Bash:

python outlook_bridge.py list --count 10 --pretty
python outlook_bridge.py search "renewal" --folder inbox
python outlook_bridge.py reply <entry_id> --body "Noted, will revert." --draft

Вывод:

[
  {
    "Subject": "Q2 renewal — action required",
    "SenderName": "Alice Tan",
    "ReceivedTime": "2026-06-12T09:14:00",
    "Unread": true,
    "BodyPreview": "Following up on the renewal terms we discussed..."
  }
]

Claude обрабатывает JSON, анализирует его и вызывает следующую команду в цепочке. Прочитать переписку для контекста → написать черновик ответа → передать на проверку. Всё не выходя из диалога с Claude Code.

Почему не MCP?

Я рассматривал MCP-сервер. MCP оправдан, когда нужен долгоживущий серверный процесс и совместимость с разными клиентами. Для этого случая он не подошёл по трём причинам.

Время жизни COM-объекта

Долгоживущий MCP-сервер должен поддерживать COM-соединение между вызовами, обрабатывать перезапуски Outlook и управлять состоянием сессии. Прямой вызов Bash лишён этого: Claude запускает shell, Python захватывает работающий процесс Outlook, JSON возвращается, процесс завершается чисто.

Лимиты запросов

MCP-серверы, оборачивающие API (например, Microsoft Graph), наследуют троттлинг этого API. Широкие запросы — загрузка большой папки, поиск по нескольким почтовым ящикам — быстро упираются в лимиты. Мост общается напрямую с локальным COM-интерфейсом. Никакого API посередине, никаких лимитов.

Токен-эффективность

Мост возвращает ровно то, что я определил: JSON-объект с нужными полями. Ответы MCP-сервера несут протокольный оверхед поверх полезной нагрузки. Для частых операций внутри одного диалога это накапливается.

Один Python-файл. Никакого демона. Никакого протокольного оверхеда. Если описанные выше ограничения к вам не относятся, MCP-сервер — разумная альтернатива. Для локального однопользовательского сценария на Windows это более короткий путь.

Почему не Microsoft Graph?

Graph работает кроссплатформенно и без головного интерфейса. Плата: регистрация Azure-приложения, OAuth-согласие, постоянное обновление токенов. На управляемом корпоративном устройстве процесс регистрации может быть недоступен. COM не требует ничего из этого. Вы используете сессию, которая уже открыта на вашем компьютере.

Настройка разрешений

Одна запись в .claude/settings.json:

{
  "permissions": {
    "allow": [
      "Bash(python *outlook_bridge.py*:*)"
    ]
  }
}

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

Команды send, reply и forward работают. По умолчанию я использую флаг --draft — Claude сохраняет черновик, а я проверяю перед отправкой. Случайные отправки всё ещё реальный риск при цепочке операций внутри диалога. Файл CLAUDE_INTEGRATION.md в репозитории содержит сниппет CLAUDE.md, который устанавливает draft-by-default как постоянную инструкцию.

Что покрывает мост

  • list — последние письма в любой папке
  • search — по ключевому слову, отправителю, теме
  • read — полное тело письма и список вложений
  • send / reply / reply-all / forward — с поддержкой --draft
  • move / delete
  • cal-list — события календаря в диапазоне дат, включая общие календари

Ограничения

Стоит честно перечислить:

  • Только Windows. COM — это Windows-интерфейс.
  • Только классическое приложение Outlook Desktop — не новый веб-обёртка Outlook, не OWA, не Mac.
  • Outlook должен быть открыт и выполнен вход при запуске скрипта.
  • Один компьютер, один профиль Outlook. Не для безголовых или многопользовательских серверных сценариев.

Если любое из этих ограничений вам не подходит — используйте Microsoft Graph.

Практический вывод

Прямо сейчас перейдите в репозиторий github.com/ChiefStarKid/claude-outlook-bridge, скачайте файл outlook_bridge.py, настройте разрешения в .claude/settings.json и попробуйте выполнить команду python outlook_bridge.py list --count 5. Вы увидите, как просто автоматизировать Outlook без Azure и MCP.

#outlook#python#claude code#com-автоматизация#windows
Al
Редакция Algolit

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

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →