YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Corporate Mail — корпоративная почта на Django

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

Python Django License


Содержание


Возможности

Раздел Что умеет
Письма Входящие, отправленные, черновики, избранное, спам, корзина, архив
Написание Получатели / копия / скрытая копия, вложения, простое форматирование текста
Цепочки Письма группируются в переписки (thread), ответ и пересылка
Метки Цветные метки, фильтрация писем по метке
Папки Свои папки и вложенные подпапки
Контакты Адресная книга, группы контактов, импорт и экспорт CSV
Шаблоны Заготовки писем, в том числе общие для всех сотрудников
Фильтры Правила автоматической обработки входящих (метка, архив, звезда и т.д.)
Поиск Быстрый поиск и расширенный поиск по дате, адресату, вложениям
Настройки Подпись, автоответчик (отпуск), квота почтового ящика
Печать Версия письма для печати
Админка Полное управление данными через /admin/

Форматирование в тексте письма: **жирный**, *курсив*, __подчёркнутый__, # Заголовок, > цитата, - список, [ссылка](https://example.com).


Технологии

  • Python 3.10+ и Django 5.2
  • SQLite по умолчанию (можно переключить на PostgreSQL одной строкой в .env)
  • Bootstrap 5 + Font Awesome 6 для интерфейса
  • Django REST Framework — API для AJAX-запросов
  • Celery + Redis — необязательно, только для отложенной отправки писем

Быстрый старт

Нужен установленный Python 3.10 или новее (скачать) и Git. При установке Python обязательно поставьте галочку «Add Python to PATH».

1. Скачать проект

git clone https://github.com/imomzoda-dev/corporate-mail-django.git
cd corporate-mail-django

2. Создать виртуальное окружение

Windows (PowerShell или CMD):

python -m venv venv
venv\Scripts\activate

Linux / macOS:

python3 -m venv venv && source venv/bin/activate

После активации в начале строки терминала появится (venv).

3. Установить зависимости

pip install -r requirements.txt

4. Создать базу данных

cd corporate_mail
python manage.py migrate

5. Загрузить демонстрационные данные (по желанию)

python manage.py seed_demo

Команда создаст двух тестовых сотрудников, переписку между ними, контакты, метки, папки, шаблон письма и правило фильтрации. Запускать её можно сколько угодно раз — существующие данные не дублируются и не удаляются.

6. Создать администратора (по желанию)

python manage.py createsuperuser

7. Запустить сервер

python manage.py runserver

Откройте в браузере http://127.0.0.1:8000/

Остановить сервер — Ctrl + C в терминале.


Тестовые аккаунты

После команды python manage.py seed_demo доступны два готовых аккаунта:

Логин Пароль Email Роль
alisher demo12345 alisher@company.com Руководитель отдела продаж
malika demo12345 malika@company.com Менеджер проектов

Чтобы увидеть, как работает переписка, откройте два разных браузера (или обычное окно и окно в режиме инкогнито) и войдите под разными пользователями — письмо, отправленное одним, сразу появится у другого.

Это демонстрационные пароли. Для реального использования смените их или создайте своих пользователей через регистрацию либо /admin/.


Как пользоваться

Регистрация и вход

При регистрации автоматически создаётся почтовый профиль и системные метки.

Отправить письмо

  1. Нажмите синюю кнопку «Написать» слева вверху.
  2. В поле «Кому» укажите email получателя (несколько адресов — через запятую).
  3. Заполните тему и текст, при необходимости прикрепите файлы.
  4. Нажмите «Отправить».

Письмо появляется у вас в «Отправленных», а у получателя — во «Входящих». Если адрес не принадлежит ни одному пользователю системы, письмо просто сохранится у вас в отправленных.

Кнопка «Сохранить черновик» откладывает письмо в «Черновики».

Работа со списком писем

  • Клик по письму — открыть, оно автоматически отмечается прочитанным.
  • Звёздочка слева — добавить в избранное.
  • Внутри письма доступны: ответить, переслать, в архив, в спам, удалить, печать.

Метки и папки

  • Метки (левое меню → «Метки») — цветные ярлыки, у письма их может быть несколько.
  • Папки (левое меню → «Папки») — привычная древовидная структура, поддерживаются подпапки.

Фильтры (автоматическая обработка)

Настройки → Правила фильтрации → Создать правило. Например: «если отправитель содержит partner.com → добавить метку Клиенты». Правила применяются к каждому новому входящему письму сверху вниз.

Контакты

Контакты → Импорт CSV. Формат файла (первая строка — заголовки):

email,first_name,last_name,company
ivanov@company.com,Иван,Иванов,Отдел продаж

Обязательна только колонка email. Экспорт выгружает контакты в CSV с поддержкой кириллицы в Excel.

Подпись и автоответчик

Настройки → Подпись — текст, который добавляется в конец письма. Настройки → Автоответчик — сообщение на время отпуска.


Настройка через .env

Все настройки читаются из переменных окружения, поэтому менять код не нужно.

cp .env.example .env

(в Windows: copy .env.example .env)

Файл .env в git не попадает — в нём хранятся секреты.

Переменная По умолчанию Назначение
DJANGO_SECRET_KEY ключ для разработки Секретный ключ. Обязательно смените на продакшене
DJANGO_DEBUG True Режим отладки. На боевом сервере — False
DJANGO_ALLOWED_HOSTS * Разрешённые домены через запятую
DB_ENGINE sqlite sqlite или postgres
DB_NAME / DB_USER / DB_PASSWORD / DB_HOST / DB_PORT — Параметры PostgreSQL
EMAIL_BACKEND console Куда отправлять внешнюю почту (по умолчанию — в терминал)
CORPORATE_DOMAIN company.com Домен компании
MAIL_STORAGE_QUOTA_MB 1024 Квота ящика в мегабайтах
MAX_ATTACHMENT_SIZE_MB 25 Максимальный размер вложения

Переключение на PostgreSQL

В .env:

DB_ENGINE=postgres
DB_NAME=corporate_mail_db
DB_USER=postgres
DB_PASSWORD=ваш_пароль
DB_HOST=localhost
DB_PORT=5432

Затем снова python manage.py migrate.


Структура проекта

Mail_django/
├── README.md
├── requirements.txt
├── .env.example
├── .gitignore
└── corporate_mail/
    ├── manage.py
    ├── corporate_mail/          # настройки проекта
    │   ├── settings.py
    │   ├── urls.py
    │   ├── wsgi.py / asgi.py
    │   └── celery.py
    └── mail/                    # основное приложение
        ├── models.py            # 11 моделей: письма, метки, папки, контакты…
        ├── forms.py
        ├── admin.py
        ├── urls.py
        ├── tasks.py             # фоновые задачи Celery
        ├── views/               # представления, разбитые по темам
        │   ├── auth.py          # регистрация, вход, выход
        │   ├── messages.py      # письма, написание, действия
        │   ├── contacts.py      # контакты и группы
        │   ├── labels.py        # метки
        │   ├── folders.py       # папки
        │   ├── templates.py     # шаблоны писем
        │   ├── filters.py       # правила фильтрации
        │   ├── settings.py      # настройки, подпись, автоответчик
        │   ├── search.py        # поиск
        │   └── api.py           # JSON API для AJAX
        ├── management/commands/
        │   ├── seed_demo.py                # демо-данные
        │   └── create_missing_profiles.py  # починка профилей
        ├── templates/mail/      # HTML-шаблоны
        └── migrations/

Модели данных

UserProfile — профиль сотрудника (подпись, квота, автоответчик) · Message — письмо · Attachment — вложение · Label — метка · EmailFolder — папка · Contact / ContactGroup — адресная книга · EmailTemplate — шаблон · FilterRule — правило фильтрации · ScheduledEmail — отложенная отправка · MessageRead — отметка о прочтении · EmailLog — журнал отправки.


Полезные команды

Все команды выполняются из папки corporate_mail при активном виртуальном окружении.

python manage.py runserver
python manage.py migrate
python manage.py createsuperuser
python manage.py seed_demo
python manage.py create_missing_profiles
python manage.py collectstatic

Отложенная отправка писем (нужен запущенный Redis) — в отдельном терминале:

celery -A corporate_mail worker -l info

Частые проблемы

python не является внутренней или внешней командой Python не добавлен в PATH. Переустановите Python с галочкой «Add Python to PATH» или используйте команду py вместо python.

venv\Scripts\activate не запускается в PowerShell Выполните один раз:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

ModuleNotFoundError: No module named 'django' Не активировано виртуальное окружение (нет (venv) в строке терминала) или не установлены зависимости — повторите шаги 2 и 3.

Порт 8000 занят

python manage.py runserver 8080

Письмо не дошло до получателя Убедитесь, что адрес получателя точно совпадает с email зарегистрированного пользователя. Проверить список можно в админке: /admin/auth/user/.

Нужно начать с чистой базы Удалите файл corporate_mail/db.sqlite3 и выполните python manage.py migrate. Все данные при этом будут потеряны.


Лицензия

MIT — используйте, изменяйте и распространяйте свободно. См. файл LICENSE.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support