Email an article to someone, as the platform org, with a working opt-out

FeatureEmailService
Shipped
September 11, 2026 at 8:52 PM UTC
Author
Kamo
Commit
28660b2

A visitor on the marketing site can send the seat-fee article to up to three people. POST /api/internal/article-share (X-Internal-Auth, like every other /api/internal endpoint) sends each of them one email as the top-level organization, from "<sender> via KamoCRM" with Reply-To the sender. Reuses what exists instead of adding a second copy of it: - Opt-outs live in email_suppressions, keyed to the platform org's id, so an opt-out here never touches a hosted org's list and an org's list never blocks this. The link is a signed token (orgId|email, HMAC) that the existing UnsubscribeController and page now accept alongside campaign tokens, with the same RFC 8058 List-Unsubscribe headers campaigns send. - Delivery goes through **************** which gains DeliveryOptions (display name and extra headers) so From, the SPF decision and the relay fallback stay decided in one place. A caller-built letter has no template row, so the usage counter is skipped for it. Limits, counted from a hashed ledger **************** created on startup) so every pod agrees: three people per request, preset notes only, 10 a day per sender and per visitor address, 500 a day overall, one email per address every 90 days, never to a suppressed address. Also sets bulk-email.unsubscribe-base-url in the prod configmap. The code default is blank, which sends campaign mail without its unsubscribe link.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing