From ff857be01affc3883a8d436f19fc51f083b4ff66 Mon Sep 17 00:00:00 2001 From: dufyfduck Date: Thu, 29 Jan 2026 01:34:43 +0100 Subject: [PATCH] imapclient feature plan --- README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/README.md b/README.md index ded224cf..1c3ef9c3 100644 --- a/README.md +++ b/README.md @@ -292,6 +292,77 @@ fetch('/api/developer/setup', { method: 'POST' }).then(r => r.json()).then(conso # Danach ausloggen und neu einloggen ``` +## Geplante Features + +### E-Mail-Client Integration + +Ein integrierter E-Mail-Client pro Kunde mit den folgenden Funktionen: + +#### Konzept + +- **E-Mail-Tab in Kundenansicht**: Zeigt alle E-Mails des Kunden via IMAP an +- **Mehrere E-Mail-Konten**: Dropdown zur Auswahl zwischen verschiedenen `@stressfrei-wechseln.de` Adressen des Kunden +- **E-Mails schreiben**: Neue E-Mails verfassen und Antworten auf bestehende E-Mails +- **Versand vom ausgewählten Konto**: SMTP-Versand über die gewählte Stressfrei-Wechseln Adresse +- **Zuordnung zu Verträgen**: Manuelles Zuordnen von E-Mails zu Verträgen +- **E-Mail-Tab in Vertragsansicht**: Zeigt nur dem Vertrag zugeordnete E-Mails (Postfach-Ansicht), mit Antworten/Schreiben-Funktion + +#### Technische Umsetzung + +1. **IMAP/SMTP-Zugangsdaten speichern** + - Beim Erstellen einer StressfreiEmail werden die Zugangsdaten vom Email-Provider (Plesk) zurückgegeben + - Diese werden verschlüsselt in der Datenbank gespeichert (wie bereits bei Portal-Zugangsdaten) + - StressfreiEmail-Tabelle erweitern um: `imapServer`, `imapPort`, `smtpServer`, `smtpPort`, `emailPassword` (verschlüsselt) + +2. **Backend: IMAP-Service** + - IMAP-Client zum Abrufen von E-Mails (z.B. `imap-simple` oder `imapflow`) + - Endpunkte: + - `GET /api/customers/:id/emails` - E-Mails für Kunde abrufen + - `GET /api/emails/:id` - Einzelne E-Mail mit Body + - `POST /api/emails/send` - E-Mail senden (SMTP) + - `PUT /api/emails/:id/assign` - E-Mail einem Vertrag zuordnen + +3. **Frontend: E-Mail-Tab (Kundenansicht)** + - Neuer Tab in CustomerDetail: "E-Mails" + - Dropdown oben: Auswahl der StressfreiEmail-Adresse + - Liste der E-Mails (Betreff, Absender, Datum) + - Detail-Ansicht beim Klick + - "Neue E-Mail" und "Antworten" Buttons + - "Vertrag zuordnen" Dropdown in E-Mail-Detail + +4. **Frontend: E-Mail-Tab (Vertragsansicht)** + - Neuer Tab in ContractDetail: "E-Mails" + - Zeigt nur E-Mails die diesem Vertrag zugeordnet sind + - Gleiche Funktionalität wie in Kundenansicht: + - Liste der zugeordneten E-Mails + - Detail-Ansicht beim Klick + - "Neue E-Mail" und "Antworten" Buttons + - Versand erfolgt über die StressfreiEmail-Adresse des Kunden + +5. **Datenbank** + ```prisma + model CustomerEmail { + id Int @id @default(autoincrement()) + customerId Int + customer Customer @relation(...) + stressfreiEmailId Int + stressfreiEmail StressfreiEmail @relation(...) + contractId Int? // Optionale Zuordnung zu Vertrag + contract Contract? @relation(...) + messageId String @unique // IMAP Message-ID + subject String + fromAddress String + toAddress String + date DateTime + isRead Boolean @default(false) + folder String // INBOX, Sent, etc. + createdAt DateTime @default(now()) + } + ``` + +#### Status +- [ ] Noch nicht implementiert - Plan für zukünftige Version + ## Lizenz MIT