Skip to content

feat(email): wire MessageIdUtil into TicketEmail + signed Reply-To#50

Merged
mpge merged 2 commits into
masterfrom
feat/email-service-wireup
Apr 27, 2026
Merged

feat(email): wire MessageIdUtil into TicketEmail + signed Reply-To#50
mpge merged 2 commits into
masterfrom
feat/email-service-wireup

Conversation

@mpge

@mpge mpge commented Apr 27, 2026

Copy link
Copy Markdown
Member

Recovers auto-closed #34 (base feat/email-message-id squash-merged via #33). Rebased onto current master.

@mpge
mpge force-pushed the feat/email-service-wireup branch from c47f42f to 40e6999 Compare April 27, 2026 01:48
Refactors TicketEmail to delegate Message-ID generation to
Escalated.Services.Email.MessageIdUtil (added in #33) so the format
matches the canonical NestJS reference:

  before:  <escalated-{reference}@{domain}>
           <escalated-{reference}-{reply.id}@{domain}>
  after:   <ticket-{id}@{domain}>
           <ticket-{id}-reply-{reply_id}@{domain}>

Adds signed_reply_to/1 that returns reply+{id}.{hmac8}@{domain} or
nil when email_inbound_secret is empty. Both threading_headers_for_ticket
and threading_headers_for_reply include the Reply-To header when the
secret is configured.

New config key:
  config :escalated, email_inbound_secret: "..."

Updates existing message_id_for_* tests for the new format. Adds
5 new tests covering signed_reply_to/1 with + without secret, and
the Reply-To wire-up through both threading header helpers.
@mpge
mpge force-pushed the feat/email-service-wireup branch from 40e6999 to c7d5ec6 Compare April 27, 2026 01:55
@mpge
mpge merged commit e12e482 into master Apr 27, 2026
1 check passed
@mpge
mpge deleted the feat/email-service-wireup branch April 27, 2026 02:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant