Eine umfassende Lösung zur Verwaltung und Automatisierung von Outlook-Postfächern mit Exchange-Server-Integration, KI-gestützter Mail-Analyse und erweiterbarem Plugin-System.
MailHelper ist eine moderne Anwendung zur Verwaltung von E-Mails mit folgenden Kernfunktionen:
- Exchange-Server-Integration: Vollständige Integration mit Microsoft Exchange über Autodiscover
- Intelligente Mail-Analyse: KI-gestützte Analyse von Mail-Inhalten mit Sentiment-Analyse
- Automatisches Clustering: Thematische Gruppierung von Mails mit fortschrittlichen Algorithmen
- Erweiterbares Plugin-System: Flexible Erweiterbarkeit durch Plugins für individuelle Anforderungen
- Moderne Web-Oberfläche: Intuitive Benutzeroberfläche mit Gradio
- Sichere Speicherung: Verschlüsselte Speicherung von Zugangsdaten und Mail-Daten
- Mail-Management: Abrufen, Suchen, Organisieren und Verwalten von E-Mails
- Automatische Antworten: KI-gestützte Generierung von professionellen Antworten
- Mail-Clustering: Intelligente Gruppierung von thematisch ähnlichen Mails
- Benachrichtigungen: Automatische Benachrichtigungen bei wichtigen Mails
- Plugin-Architektur: Erweiterbar durch individuelle Plugins
- PST-Datei-Verarbeitung: Analyse und Import von PST-Dateien
- Modulare Architektur: Trennung von Kernfunktionalität und Erweiterungen
- Multi-LLM-Unterstützung: Unterstützung für verschiedene LLM-Provider (Ollama, OpenAI, ONNX)
- Asynchrone Verarbeitung: Effiziente Verarbeitung großer Mail-Mengen
- Caching-System: Intelligentes Caching für verbesserte Performance
- Sicherheit: Verschlüsselung und sichere Speicherung von Daten
- Export/Import: Datenexport und -import für Backup und Migration
- Python 3.11 oder höher
- Exchange-Server-Zugangsdaten
- Optional: LLM-Provider (Ollama, OpenAI, etc.)
# Repository klonen
git clone https://github.com/mailhelper/mailhelper.git
cd mailhelper
# Virtuelle Umgebung erstellen
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Abhängigkeiten installieren
pip install -e .
# Konfiguration einrichten
cp config/default.toml ~/.mailhelper/config.toml
# Anwendung starten
python main.pyFür eine detaillierte Installations- und Konfigurationsanleitung siehe INSTALL.md.
-
Anwendung starten:
python main.py
-
Web-Oberfläche öffnen:
http://localhost:7860 -
Exchange-Verbindung einrichten:
- E-Mail-Adresse und Passwort eingeben
- Verbindung testen
- Bei Erfolg: Mails werden automatisch geladen
-
Clustering durchführen:
- Zum Tab "Clustering" wechseln
- "Clustering starten" klicken
- Ergebnisse im Dashboard anzeigen
-
LLM-Funktionen testen:
- Mail auswählen
- "Antwort generieren" klicken
- Einstellungen anpassen
- Generierte Antwort prüfen
-
PST-Dateien verarbeiten:
- Zum Tab "PST-Datei" wechseln
- PST-Datei hochladen
- Analyse durchführen oder Suche starten
mailhelper/
├── src/ # Quellcode
│ ├── core/ # Kernkomponenten
│ │ ├── engine.py # Haupt-Engine
│ │ ├── plugin_manager.py # Plugin-Management
│ │ ├── mail_service.py # Mail-Dienst
│ │ ├── config.py # Konfigurationsverwaltung
│ │ └── exceptions.py # Ausnahmeklassen
│ ├── llm/ # LLM-Integration
│ │ ├── client.py # LLM-Client
│ │ ├── prompts.py # Prompt-Management
│ │ ├── providers.py # LLM-Provider
│ │ └── onnx/ # ONNX-Modelle
│ ├── exchange/ # Exchange-Integration
│ │ ├── connector.py # Exchange-Connector
│ │ └── models.py # Mail-Modelle
│ ├── clustering/ # Mail-Clustering
│ │ ├── engine.py # Clustering-Engine
│ │ └── preprocessing.py # Daten-Präprocessing
│ ├── storage/ # Speicherverwaltung
│ │ ├── manager.py # Storage-Manager
│ │ └── credentials.py # Zugangsdaten
│ ├── frontend/ # Web-Oberfläche
│ │ ├── app.py # Hauptanwendung
│ │ ├── components.py # UI-Komponenten
│ │ └── plugin_interface.py # Plugin-Interface
│ ├── plugins/ # Plugin-Verzeichnis
│ ├── pst/ # PST-Verarbeitung
│ │ ├── pst_reader.py # PST-Reader
│ │ └── pst_analyzer.py # PST-Analysator
│ └── llm/onnx/ # ONNX-Modelle
├── config/ # Konfigurationsdateien
│ └── default.toml # Standardkonfiguration
├── docs/ # Dokumentation
│ ├── README.md # Hauptdokumentation
│ ├── API.md # API-Referenz
│ ├── INSTALL.md # Installationsanleitung
│ └── PLUGIN_DEVELOPMENT.md # Plugin-Entwicklung
├── tests/ # Tests
├── main.py # Hauptstartdatei
├── pyproject.toml # Projektmetadaten
└── LICENSE # AGPLv3-Lizenz
Die Anwendung wird über TOML-Konfigurationsdateien gesteuert:
# Exchange-Server-Einstellungen
[exchange]
server = "outlook.office365.com"
username = ""
password = ""
use_ssl = true
timeout = 30
autodiscover = true
access_type = "delegate"
server_url = ""
# LLM-Konfiguration
[llm]
provider = "ollama"
base_url = "http://localhost:11434/v1"
model = "qwen2.5:latest"
temperature = 0.5
api_key = ""
max_tokens = ""
# Clustering-Parameter
[clustering]
algorithm = "kmeans"
n_clusters = 5
min_cluster_size = 3
max_cluster_size = 100
similarity_threshold = 0.7
enable_clustering = true
clustering_interval = 24
auto_clustering = true
subject_weight = 0.4
body_weight = 0.6
# Speicher-Einstellungen
[storage]
storage_type = "file"
storage_path = "storage"
base_path = "storage"
backup_enabled = true
backup_interval = 24
encryption_enabled = false
compression_enabled = true
retention_days = 30
# Frontend-Einstellungen
[frontend]
theme = "monochrome"
title = "MailHelper"
port = 7860
share = false
height = 800
width = 1200
# Plugin-Einstellungen
[plugin]
plugin_dir = "plugins"
enabled_plugins = []
disabled_plugins = []
auto_load = true
plugin_timeout = 30OPENAI_API_KEY: API-Schlüssel für OpenAI (falls verwendet)MAILHELPER_CONFIG_PATH: Pfad zur KonfigurationsdateiMAILHELPER_LOG_LEVEL: Log-Level (DEBUG, INFO, WARNING, ERROR)
MailHelper bietet ein flexibles Plugin-System zur Erweiterung der Funktionalität:
- MailProcessorPlugin: Verarbeitet Mails basierend auf Kriterien
- NotificationPlugin: Sendet Benachrichtigungen
- Hook-Plugin: Reagiert auf Systemereignisse
- IntegrationPlugin: Integriert externe Dienste
from src.core.plugin_manager import BasePlugin, PluginInfo
class MyPlugin(BasePlugin):
def initialize(self) -> bool:
return True
def execute(self, *args, **kwargs) -> Any:
# Plugin-Logik
return {"result": "success"}
def get_info(self) -> PluginInfo:
return PluginInfo(
name="MyPlugin",
version="1.0.0",
description="Mein Plugin",
author="Mein Name"
)Für eine detaillierte Anleitung zur Plugin-Entwicklung siehe docs/PLUGIN_DEVELOPMENT.md.
Die Anwendung bietet eine umfassende API für die Integration in andere Systeme:
- Core API: Hauptkomponenten und Engine
- Exchange API: Mail-Operationen und Exchange-Integration
- LLM API: KI-Funktionen und Textverarbeitung
- Clustering API: Mail-Clustering und Analyse
- Storage API: Speicherverwaltung und Datenpersistenz
- Plugin API: Plugin-Management und Erweiterungen
Die vollständige API-Referenz finden Sie in docs/API.md.
from src.core.engine import MailHelperEngine
# Engine initialisieren
engine = MailHelperEngine()
engine.initialize_all()
# Mails abrufen und verarbeiten
mail_service = engine.storage_manager.mail_service
llm_client = engine.llm_client
# Ungelesene Mails abrufen
unread_mails = mail_service.get_unread_mails(limit=50)
# Jeden Mail mit LLM analysieren
for mail in unread_mails:
analysis = llm_client.analyze_text(mail.body, "sentiment")
print(f"Mail: {mail.subject}, Sentiment: {analysis['sentiment']}")from src.core.plugin_manager import PluginManager
# Plugin-Manager initialisieren
plugin_manager = PluginManager()
# Plugin abrufen und ausführen
plugin = plugin_manager.get_plugin("MailAnalyzer")
if plugin:
result = plugin.execute(mail_data)
print(f"Analyse-Ergebnis: {result}")from src.llm.prompts import PromptManager
# PromptManager initialisieren
prompt_manager = PromptManager()
# Custom Prompt hinzufügen
prompt_manager.add_prompt(
"response_generation",
"professional_email",
"Erstelle eine professionelle Antwort auf: {content}"
)
# Prompt verwenden
prompt = prompt_manager.get_prompt(
"response_generation",
"professional_email",
content="Ich hätte gerne ein Angebot..."
)from src.pst.pst_reader import PSTReader
from src.pst.pst_analyzer import PSTAnalyzer
# PST-Datei laden
pst_reader = PSTReader("path/to/file.pst")
pst_reader.open()
# PST analysieren
analyzer = PSTAnalyzer(pst_reader)
analyzer.load_emails()
# Statistiken abrufen
stats = analyzer.get_email_statistics()
sentiment = analyzer.get_sentiment_analysis()
patterns = analyzer.get_email_patterns()
print(f"Anzahl Mails: {stats['total_emails']}")
print(f"Sentiment: {sentiment['percentages']}")- exchangelib>=4.8.0: Exchange-Server-Integration
- gensim>=4.3.0: Clustering-Algorithmen
- openai>=1.0.0: LLM-Integration
- gradio>=4.40.0: Web-Oberfläche
- cryptography>=41.0.0: Verschlüsselung
- pydantic>=2.0.0: Datenvalidierung
- tomli>=2.0.0: TOML-Konfiguration
- transformers>=4.35.0: NLP-Modelle
- onnxruntime>=1.16.0: ONNX-Inferenz
- libpff-python>=20231205: PST-Datei-Verarbeitung
- pytest>=7.0.0: Tests
- black>=23.0.0: Code-Formatierung
- isort>=5.0.0: Import-Organisation
- mypy>=1.0.0: Typ-Prüfung
- pre-commit>=3.0.0: Pre-commit-Hooks
Dieses Projekt ist unter der AGPLv3-Lizenz lizenziert.
- Hauptdokumentation: docs/README.md
- API-Referenz: docs/API.md
- Installationsanleitung: docs/INSTALL.md
- Plugin-Entwicklung: docs/PLUGIN_DEVELOPMENT.md
MailHelper basiert auf folgenden großartigen Open-Source-Bibliotheken:
- exchangelib - Exchange-Server-Integration
- gensim - Natural Language Processing
- gradio - Web-Interface
- openai-python - LLM-Integration
- transformers - NLP-Modelle
- libpff-python - PST-Datei-Verarbeitung