From f04ff73b287784e1f72a42f505350feed55262e8 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 13 Sep 2026 17:41:12 +0200 Subject: [PATCH] docs: copy-to-organizer + Email sent column Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01EYwoAkZZmXMMmaBp4WGUBo --- README.md | 2 +- docs/upstream-candidates.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9aa5b4d..5ae0639 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Events includes a shareable ticket scanner, which can be used to register attend From display name — `extra.organizer_name` gives "Organizer via ", otherwise the site title. Replies go to `extra.reply_to_email`, falling back to the event owner's account email (no Reply-To when neither exists). The - From _address_ is always the instance mailbox, which is what DKIM signs. `POST /events/api/v1/tickets/{ticket_id}/resend-email` + From _address_ is always the instance mailbox, which is what DKIM signs. `extra.copy_to_organizer` BCCs every ticket email to that reply-to address (envelope only, no header) so the organizer keeps a copy; the admin ticket table shows an "Email sent" column from `extra.email_notification_sent`. `POST /events/api/v1/tickets/{ticket_id}/resend-email` returns a `TicketResendResult` with per-channel outcome. ## Powered by LNbits diff --git a/docs/upstream-candidates.md b/docs/upstream-candidates.md index b5b06d3..2c7e4fb 100644 --- a/docs/upstream-candidates.md +++ b/docs/upstream-candidates.md @@ -18,3 +18,4 @@ in an upstream-compatible form; strike it when the PR merges upstream. | `Date` + `Message-ID` + From display name on the ticket email (`build_ticket_email`); event details in the body | `services.py` | lnbits/events (mailer) **and** lnbits/lnbits `send_email` (same omissions, hits password-reset/admin mails) | trivial, standalone — measured: SpamAssassin MISSING_DATE 1.4 + MISSING_MID 0.14 | | Ticket card PNG (event/when/where/QR/name/id) attached to the ticket email instead of a remote `` (`qr.py`, `GET /api/v1/ticket-card/{id}`) | `qr.py`, `services.py` | lnbits/events (their "ticket image" compositing could reuse the renderer) | standalone; mail-tester: removes HTML_IMAGE_ONLY (1.8) | | Per-event sender identity: `extra.organizer_name` (From display name "X via ") + `extra.reply_to_email` (Reply-To, falls back to owner account email) | `models.py`, `services.py`, admin dialog | lnbits/events | small, standalone | +| `extra.copy_to_organizer` (envelope BCC of ticket emails to the reply-to) + "Email sent" column in the admin ticket table | `services.py`, `static/js/index.*` | lnbits/events | small, standalone |