imapclient feature plan
This commit is contained in:
parent
31f807fbd0
commit
ff857be01a
71
README.md
71
README.md
|
|
@ -292,6 +292,77 @@ fetch('/api/developer/setup', { method: 'POST' }).then(r => r.json()).then(conso
|
||||||
# Danach ausloggen und neu einloggen
|
# 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
|
## Lizenz
|
||||||
|
|
||||||
MIT
|
MIT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue