Skip to content

Send resends and releases to the right recipients - #33

Merged
jszobody merged 1 commit into
masterfrom
fix/resend-recipients
Oct 3, 2026
Merged

jszobody merged 1 commit into
masterfrom
fix/resend-recipients

Conversation

@jszobody

@jszobody jszobody commented Oct 3, 2026

Copy link
Copy Markdown
Member

Fixes #31.

Resend and Release both copied the recorded Cc and Bcc lists onto a new To built from the clicked row. That sent mail to the wrong people.

Resend

Before: resending the Bcc row of an email to a@ (To), c@ (Cc) and b@ (Bcc) sent To b@, Cc c@, Bcc b@. So c@ got the email again, and b@ appeared twice.

After: a resend goes only to the recipient on that row. This matches the dashboard prompt, "Resend this email to {address}?", and the dashboard's suppression check, which only looks at that one address. To reach several original recipients, resend each row.

Release

Release marks every sibling row as sent, so it has to deliver to the whole original envelope.

Before: releasing from a Cc or Bcc row put that address in To and left out the original To recipients, though their rows still flipped to "sent".

After: release sends the original To, Cc and Bcc lists, whichever row you release from.

The release confirmation is the browser's native confirm() dialog, which a page screenshot can't capture. Its text now names every recipient:

- Release this sandboxed email and send it for real to cc@example.com? This cannot be undone.
+ Release this sandboxed email and send it for real to to@example.com, cc@example.com? This cannot be undone.

Changes

  • ResentMessage sends to the row's address only.
  • ReleasedMessage sends the recorded To, Cc and Bcc. A row with no recorded envelope falls back to its own address.
  • New EmailMessage::envelopeAddresses() supplies the Release prompt.
  • The readme and docblocks now describe resend as single-recipient.

Tests

  • A resend of each of the To, Cc and Bcc rows reaches only that address, in To.
  • A release from a Bcc row sends the full original envelope.
  • The release prompt lists every recipient.

All 455 tests pass, and static analysis is clean.

#16 (duplicate resent tags) changes the same class and has its own PR.

Resending a Cc or Bcc row copied the original Cc and Bcc lists, so
other recipients got the email again and the resent address appeared
twice. Releasing from a Cc or Bcc row put that address in To and
dropped the original To recipients, though their rows flipped to sent.

- Resend goes to the resent row's recipient alone, matching the
  dashboard's "Resend this email to {address}?" prompt
- Release sends the original To, Cc, and Bcc envelope from any row
- The Release prompt names every recipient it will send to

Fixes #31
@jszobody
jszobody merged commit 58022f2 into master Oct 3, 2026
1 check passed
@jszobody
jszobody deleted the fix/resend-recipients branch October 3, 2026 14:07
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.

Resending a Cc or Bcc recipient re-sends to the other Cc/Bcc recipients

1 participant