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
|
||||
```
|
||||
|
||||
## 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue