Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Автоматическая рассылка файлов через Outlook Win32

Это приложение на WINDOWS автоматизирует процесс отправки файлов (например, отчетов) через Microsoft Outlook на основе заданного расписания и конфигурации. Оно состоит из двух основных компонентов:

1.  **`auto_sender.py`**: Веб-интерфейс на Streamlit для настройки параметров, предварительного просмотра файлов и ручной отправки.
2.  **`sender_service.py`**: Фоновый сервис, который выполняет автоматическую отправку файлов по расписанию.

> **ВАЖНО:** Приложение предназначено **только для работы на компьютерах под управлением Microsoft Windows** с установленным **Microsoft Outlook**. Оно использует библиотеку `pywin32` для взаимодействия с Outlook через COM API. Приложение **не будет работать** на Linux, macOS или в облачных средах (например, Hugging Face Spaces), где нет доступа к Outlook/COM.

## Возможности
****************************** автоматический поиск онлайн файлов в папке и отправка "налету"*******************************
*   **Конфигурация по складам**: Настройка email адресов и правил отправки для каждого склада отдельно.
*   **Правила дат файлов**: Возможность указать, файлы с какой датой должны отправляться для каждого склада (например, "файлы за завтрашнюю дату" или "файлы за пятницу - за 3 дня вперёд").
*   **Фильтрация файлов**: Отправка файлов только соответствующего склада (имя файла начинается с кода склада).
*   **Веб-интерфейс**: Удобный интерфейс для управления настройками и просмотра логов.
*   **Логирование**: Подробное логирование всех действий сервиса и интерфейса.

## Требования

*   **Операционная система**: Microsoft Windows (7/8/10/11)
*   **Microsoft Outlook**: Установлен и настроен на компьютере. Outlook **должен быть запущен** во время работы сервиса.
*   **Python**: Python 3.8 или выше.
*   **Зависимости Python**: См. файл `requirements.txt`.

## Установка

1.  **Клонируйте или скачайте репозиторий**:
    *   Вы можете клонировать репозиторий с помощью Git:
        ```bash
        git clone <URL_вашего_репозитория>
        ```
    *   Или скачать архив с кодом и распаковать его в папку на вашем компьютере.

2.  **Откройте командную строку или PowerShell** и перейдите в папку проекта:
    ```bash
    cd путь\к\вашему\проекту
    ```

3.  **(Рекомендуется) Создайте виртуальное окружение Python**:
    ```bash
    python -m venv venv
    # Активируйте виртуальное окружение
    # На Windows (cmd):
    venv\Scripts\activate.bat
    # На Windows (PowerShell):
    venv\Scripts\Activate.ps1
    ```

4.  **Установите необходимые библиотеки Python**:
    ```bash
    pip install -r requirements.txt
    ```

## Настройка

1.  **Запустите веб-интерфейс**:
    ```bash
    streamlit run auto_sender.py
    ```
    Откроется окно браузера с интерфейсом приложения.

2.  **Перейдите на страницу "Конфигурация"** в интерфейсе.

3.  **Настройте параметры**:
    *   **Путь к папке с файлами**: Укажите полный путь к папке, где находятся файлы для отправки.
    *   **Время отправки**: Укажите одно или несколько времен отправки в формате `ЧЧ:ММ`, разделенных запятыми (например, `09:00, 12:00, 16:00`).
    *   **Email отправителя**: Укажите email адрес, от имени которого будут отправляться письма (должен быть настроен в вашем Outlook).
    *   **Конфигурация email адресов**: Для каждого кода склада укажите email адрес получателя.
    *   **Конфигурация дат файлов**: Для каждого склада укажите:
        *   **Дней к сегодняшней дате**: Сколько дней нужно добавить к сегодняшней дате, чтобы получить дату файла для отправки (например, `1` для "файлы за завтра").
        *   **Отправка в пятницу**: Сколько дней нужно добавить к сегодняшней дате в пятницу (например, `3` для "в пятницу отправлять файлы за понедельник").

4.  **Нажмите "Сохранить конфигурацию"**.

## Использование

1.  **Запустите сервис отправки**:
    *   В веб-интерфейсе на странице "Отправка файлов" или в боковой панели нажмите кнопку **"▶️ Запустить сервис отправки"**.
    *   Откроется новое окно командной строки, в котором будет работать `sender_service.py`. Это окно можно свернуть или закрыть, сервис продолжит работать в фоне.

2.  **Проверьте статус сервиса**:
    *   На странице "Отправка файлов" или в боковой панели должен отображаться статус **"🟢 Сервис отправки запущен"**.

3.  **Предварительный просмотр файлов**:
    *   На странице "Отправка файлов" вы можете увидеть список файлов, которые *должны быть* отправлены в ближайшее запланированное время, согласно настройкам `date_config`.

4.  **Ручная отправка**:
    *   На странице "Отправка файлов" нажмите кнопку **"🚀 Отправить сейчас"**, чтобы немедленно отправить файлы, соответствующие текущей дате и настройкам `date_config`.

5.  **Просмотр логов**:
    *   Перейдите на страницу "Логи" в интерфейсе или откройте файл `logs/sender.log` (для сервиса) и `logs/sender.log` (для интерфейса) в текстовом редакторе, чтобы увидеть подробную информацию о работе приложения.

6.  **Остановка сервиса**:
    *   В веб-интерфейсе на странице "Отправка файлов" или в боковой панели нажмите кнопку **"⏹️ Остановить сервис отправки"**.

## Формат файлов

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

[КодСклада][ГГГГММДД][ЛюбоеДругоеИмя].xlsx

*   `[КодСклада]`: Код склада (например, `7210`, `7220`).
*   `[ГГГГММДД]`: Дата в формате `YYYYMMDD` (например, `20250813`). - без точек
*   `[ЛюбоеДругоеИмя]`: Любое другое имя файла. 
*   `.xlsx`: Расширение файла Excel.

**Примеры**:
*   `7210_20250814_СД00-014490_ЗаданиеНаОтгрузку.XLSX`
*   `7220_20250815_report.xlsx`

Сервис будет искать файлы для отправки, соответствующие правилам `date_config`. Например, если для склада `7210` установлено "Дней к сегодняшней дате: 1", то в понедельник сервис будет искать файлы с именем, содержащим `7210_20250813_...` (если сегодня 2025-08-12).

## Решение проблем

*   **Outlook не подключается**:
    *   Убедитесь, что Outlook **запущен**.
    *   Проверьте права доступа к Outlook для Python/Streamlit.
    *   Перезапустите Outlook и приложение.
*   **Файлы не находятся**:
    *   Проверьте путь к папке в конфигурации.
    *   Убедитесь, что файлы имеют правильный формат имени и дату.
    *   Проверьте настройки `date_config` для соответствующего склада.
*   **Отправка не работает**:
    *   Проверьте логи на странице "Логи" или в файлах `logs/*.log`.
    *   Убедитесь, что сервис `sender_service.py` запущен.
    *   Убедитесь, что антивирус или брандмауэр не блокируют отправку.
*   **Ошибка `AttributeError: st.session_state has no attribute ...`**:
    *   Убедитесь, что вы используете последнюю версию кода, предоставленную в этом репозитории.
*   **Окно командной строки сервиса мешает работе**:
    *   Это окно можно просто свернуть. Оно отображает логи сервиса. Закрытие окна не останавливает сам сервис, но прекращает вывод логов в это окно. Для полной остановки используйте кнопку в веб-интерфейсе.


About

This application automates sending files (e.g., reports) via Microsoft Outlook based on a configurable schedule. It consists of a Streamlit web interface for configuration and manual sending, and a background Windows service (sender_service.py) that handles the scheduled automatic sending.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages