diff --git a/docs/02-datenmodell.md b/docs/02-datenmodell.md index 0280c47..90db0ba 100644 --- a/docs/02-datenmodell.md +++ b/docs/02-datenmodell.md @@ -43,6 +43,8 @@ erDiagram enum status "Neu .. Verloren" varchar source "z.B. 'Mail' bei Herkunft Postfach" tinyint mail_pool "1 = Vorbereich 'Aus Mails', noch kein Kontakt" + tinyint mail_consent "Einverständnis für Werbemails" + datetime mail_consent_at "wann erteilt - der Nachweis" longtext tags "JSON-Array als Text" longtext avatar int owner_id FK diff --git a/docs/07-anleitung-benutzer.md b/docs/07-anleitung-benutzer.md index d39af31..10df899 100644 --- a/docs/07-anleitung-benutzer.md +++ b/docs/07-anleitung-benutzer.md @@ -164,6 +164,58 @@ Sobald Kontakte aus dem Postfach übernommen wurden, erscheint neben dem Statusfilter ein **Herkunftsfilter**: *Aus Mails übernommen* zeigt nur die aus dem Postfach stammenden, *Selbst angelegt* nur die von Hand erfassten. +### Einverständnis für Mails + +Im Kontakt steht direkt unter der E-Mail-Adresse das Kästchen **Einverständnis +für Mails**. Nur mit diesem Haken kommt die Adresse in eine Mailingliste. Ohne +eingetragene Adresse ist das Kästchen gesperrt - es gibt dann nichts, wozu +jemand einwilligen könnte. + +![Kontakt mit gesetztem Einverständnis für Mails](bilder/kontakt-einverstaendnis.png) + +Der Zeitpunkt wird mitgespeichert und im Kontakt angezeigt („Erteilt am …"). +Beim Widerruf verschwindet er wieder. Bei einer Beschwerde ist nämlich nicht die +Frage, *ob* ein Einverständnis vorliegt, sondern *seit wann*. + +Wo der Haken gesetzt ist, erscheint das Briefsymbol der Kachel grün, in der +Liste steht ein Häkchen hinter der Adresse. So sieht man es ohne jeden Kontakt zu +öffnen. + +Zwei Dinge, die bewusst so sind: + +* **Im Vorbereich *Aus Mails* gibt es das Kästchen nicht.** Dass jemand eine Mail + geschrieben hat, ist keine Einwilligung in Werbung. +* **Beim Übernehmen aus *Aus Mails* wird der Haken nicht mitgesetzt.** Ein neu + übernommener Kontakt startet immer ohne Einverständnis. + +### Mailingliste erstellen + +Der Knopf **Mailingliste erstellen** in der Kontaktleiste sammelt alle Adressen +mit Einverständnis, durch Komma getrennt. Die Zahl am Knopf sagt vorab, wie viele +das sind. + +![Dialog Mailingliste mit Kopier- und Mailsymbol](bilder/kontakte-mailingliste.png) + +Rechts im Feld stehen zwei Symbole: + +| Symbol | Wirkung | +| --- | --- | +| **Kopieren** | legt die komplette Liste in die Zwischenablage - danach in Outlook ins BCC-Feld einfügen | +| **Brief** | öffnet direkt eine neue Mail im Mailprogramm, die Adressen stehen im **BCC** | + +Der Brief-Weg (`mailto:`) hat eine Grenze: Windows gibt nur rund 2000 Zeichen an +das Mailprogramm weiter. Wird die Liste länger, ist das Symbol gesperrt und der +Dialog sagt es - sonst würde die Empfängerliste unterwegs abgeschnitten, ohne +dass es jemand merkt. Dann bleibt der Weg über die Zwischenablage. + +Die Adressen gehen absichtlich ins **BCC** und nicht ins An-Feld: dort sähe jeder +Empfänger die vollständige Kundenliste. + +Unter *Wer ist dabei* stehen Name, Firma und Adresse aller Empfänger zum +Nachprüfen. Darunter steht, wie viele Kontakte fehlen - ohne Haken oder mit Haken +aber ohne Adresse. Das **Trennzeichen** lässt sich auf Semikolon umstellen, falls +Outlook die Komma-Liste nicht auflöst. + ### Aus Mails Der Menüpunkt *Kontakte* klappt zwei Unterpunkte auf: *Alle Kontakte* und diff --git a/docs/09-quellcode.md b/docs/09-quellcode.md index a171e3e..1187172 100644 --- a/docs/09-quellcode.md +++ b/docs/09-quellcode.md @@ -246,6 +246,7 @@ Warum genau diese Konstanten festgelegt sind, steht in | `components/leads/mailPool.ts` | `findMailPoolMatch()`, `diffFields()`, `isConflict()`, `MAIL_POOL_FIELDS` - Dublettenabgleich des Vorbereichs | | `components/leads/MailPoolLeads.tsx` | Ansicht „Aus Mails": Goldmarkierung, Abweichungen, Übernehmen, Sammelübernahme | | `components/leads/MailPoolMergeDialog.tsx` | Feldauswahl beim Ergänzen eines vorhandenen Kontakts | +| `components/leads/MailingListDialog.tsx` | Adressen der Kontakte mit Einverständnis: Zwischenablage und `mailto:` mit BCC, Längengrenze 1900 Zeichen | | `components/scanner/scannerUi.tsx` | `cardClass`, Buttonklassen, `MatchBadge`, `MatchStatusBadge`, `PortalStatusPill`, `formatDateTime`, `projectTimestamp` | | `components/mail/mailUi.tsx` | `Badge`, `ConfidenceBar`, Herkunfts- und Statusbeschriftungen, `formatAddresses`, `avatarColor` | | `components/mail/MailBody.tsx` | Mailinhalt im `