Skip to content

Close every reply with an invitation to contact support - #31

Merged
brocla merged 1 commit into
mainfrom
support-footer
Sep 17, 2026
Merged

brocla merged 1 commit into
mainfrom
support-footer

Conversation

@brocla

@brocla brocla commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Summary

Every reply to a sender now ends with:

Questions, problems, or suggestions? Your feedback is welcome at <support_address>.

  • Configured, not hardcoded. The address comes from a new support_address key in config/email.yaml, which keeps the deployment's domain out of the public code. Empty or absent leaves the line off, so replies are unchanged until it's set. An address with no @ fails at load, matching alert_recipient.
  • Added in one place. It goes in deliver, after the attach-or-link branch, so it closes attachment and Sheets-link replies, for successful and failed jobs, and comes after the links.
  • Not added to operator alerts, which go out through SendAlert.
  • Set off by a blank line, not the -- signature separator, because many mail clients dim or fold what follows it.

Test plan

  • New internal/mailgun/support_test.go covers:
    • attachment reply ends with the line
    • link reply puts it after the link
    • failed-job reply includes it
    • unconfigured reply is exactly the same as before
    • SendAlert doesn't include it
    • the footer helper and config parsing (trims spaces, off when empty, rejects a value with no @)
  • Mutation check: removing the call in deliver makes the three delivery tests fail
  • go test ./..., go vet ./..., gofmt -l clean
  • After deploy: send one real submission and confirm the line in Gmail

🤖 Generated with Claude Code

A sender whose report did not come out had no way to know where to turn, and
one whose report did had no easy way to suggest an improvement. Every reply now
ends with:

  Questions, problems, or suggestions? Your feedback is welcome at <address>.

The address is the new support_address key in email.yaml, not the code, since
it is deployment-specific. Empty or absent leaves the line off, so a reply is
unchanged until it is configured; an address with no "@" fails at load, as
alert_recipient does.

The line is added once, in deliver, after the attach-or-link branch, so it
closes attachment replies and link replies alike, successes and failures, and
comes after the links. Operator alerts go out through SendAlert and do not get
it. It is set off by a blank line rather than the "-- " signature delimiter,
which many mail clients dim or fold.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@brocla
brocla merged commit bed7ae7 into main Sep 17, 2026
1 check passed
@brocla
brocla deleted the support-footer branch September 17, 2026 03:20
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