Научитесь управлять Outlook через Python и Claude Code на Windows без регистрации Azure-приложения. Получите готовый код для автоматизации писем.
Работаете на корпоративном Windows-компьютере, где нельзя установить расширения браузера или зарегистрировать Azure-приложение? Вы всё ещё можете управлять Outlook через Python и Claude Code. Оказывается, достаточно одного вызова COM-интерфейса, который доступен в Outlook Desktop уже 30 лет.
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 и имеете доступ почти ко всему, что можно сделать мышкой и клавиатурой.
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-соединение между вызовами, обрабатывать перезапуски Outlook и управлять состоянием сессии. Прямой вызов Bash лишён этого: Claude запускает shell, Python захватывает работающий процесс Outlook, JSON возвращается, процесс завершается чисто.
MCP-серверы, оборачивающие API (например, Microsoft Graph), наследуют троттлинг этого API. Широкие запросы — загрузка большой папки, поиск по нескольким почтовым ящикам — быстро упираются в лимиты. Мост общается напрямую с локальным COM-интерфейсом. Никакого API посередине, никаких лимитов.
Мост возвращает ровно то, что я определил: JSON-объект с нужными полями. Ответы MCP-сервера несут протокольный оверхед поверх полезной нагрузки. Для частых операций внутри одного диалога это накапливается.
Один Python-файл. Никакого демона. Никакого протокольного оверхеда. Если описанные выше ограничения к вам не относятся, MCP-сервер — разумная альтернатива. Для локального однопользовательского сценария на Windows это более короткий путь.
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 как постоянную инструкцию.
Стоит честно перечислить:
Если любое из этих ограничений вам не подходит — используйте Microsoft Graph.
Прямо сейчас перейдите в репозиторий github.com/ChiefStarKid/claude-outlook-bridge, скачайте файл outlook_bridge.py, настройте разрешения в .claude/settings.json и попробуйте выполнить команду python outlook_bridge.py list --count 5. Вы увидите, как просто автоматизировать Outlook без Azure и MCP.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →