Добавлена опция сохранения копии отправленных писем в IMAP Sent

- Добавлены поля IMAP в модель SmtpSettings и миграция колонок
- Реализовано сохранение копии MIME-сообщения через imaplib после SMTP/EWS/Outlook отправки
- Обновлен routes.py: чтение и сохранение IMAP-настроек из формы
- Обновлен шаблон admin/email_settings.html: блок настроек IMAP с подсказками
This commit is contained in:
InviteMe Developer
2026-08-31 14:51:14 +03:00
parent c5fd029818
commit a65cb35b30
5 changed files with 154 additions and 14 deletions
+38
View File
@@ -76,6 +76,44 @@
Outlook должен быть установлен и запущен на сервере, где работает приложение. Браузер не может запустить Outlook на твоём компьютере.
</div>
<hr class="my-4">
<h5 class="mb-3">Копия отправленных писем в IMAP</h5>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="imap_save_copy" name="imap_save_copy" value="1" {% if settings.imap_save_copy %}checked{% endif %}>
<label class="form-check-label" for="imap_save_copy">Сохранять копию отправленного письма в папку IMAP</label>
<div class="form-text text-muted">Работает после успешной отправки через SMTP/EWS/Outlook. Для отправки писем по-прежнему используется выбранный выше способ.</div>
</div>
<div id="imap-fields">
<div class="row">
<div class="col-md-8 mb-3">
<label for="imap_server" class="form-label">IMAP-сервер</label>
<input type="text" class="form-control" id="imap_server" name="imap_server" value="{{ settings.imap_server or '' }}" placeholder="mail.integrita.ru">
</div>
<div class="col-md-4 mb-3">
<label for="imap_port" class="form-label">Порт</label>
<input type="number" class="form-control" id="imap_port" name="imap_port" value="{{ settings.imap_port or 993 }}">
</div>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="imap_use_ssl" name="imap_use_ssl" value="1" {% if settings.imap_use_ssl %}checked{% endif %}>
<label class="form-check-label" for="imap_use_ssl">Использовать SSL/TLS</label>
</div>
<div class="mb-3">
<label for="imap_username" class="form-label">IMAP логин (если пустой — используется логин отправки)</label>
<input type="text" class="form-control" id="imap_username" name="imap_username" value="{{ settings.imap_username or '' }}">
</div>
<div class="mb-3">
<label for="imap_password" class="form-label">IMAP пароль (если пустой — используется пароль отправки)</label>
<input type="password" class="form-control" id="imap_password" name="imap_password" placeholder="Оставьте пустым, чтобы не менять">
</div>
<div class="mb-4">
<label for="imap_folder" class="form-label">Папка для сохранения копий</label>
<input type="text" class="form-control" id="imap_folder" name="imap_folder" value="{{ settings.imap_folder or 'Sent' }}" placeholder="Sent">
<div class="form-text text-muted">Название папки на сервере: обычно <code>Sent</code>, <code>Sent Items</code> или <code>Отправленные</code>.</div>
</div>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary">Сохранить настройки</button>
<a href="{{ url_for('main.admin_email_send') }}" class="btn btn-outline-primary">Перейти к рассылке</a>