Skip to content

feat(email): implement SMTP send with confirmation and resend functio…#12

Merged
canaria-computer merged 1 commit into
mainfrom
dev1
Jan 13, 2026
Merged

feat(email): implement SMTP send with confirmation and resend functio…#12
canaria-computer merged 1 commit into
mainfrom
dev1

Conversation

@canaria-computer
Copy link
Copy Markdown
Owner

…nality

  • Add send-with-confirm subcommand with interactive/stdin modes

    • Interactive mode: prompts for recipients with pre-filled From/Reply-To
    • Stdin mode: reads recipients from stdin for CI/CD automation
    • Email preview before sending with confirmation prompt
    • Automatic .eml save on send failure
  • Add resend subcommand for failed email retry

    • Load and resend previously saved .eml files
    • Support recipient editing and Message-ID regeneration
    • Preserve original message structure
  • Implement SMTP sender with retry logic

    • 3 retry attempts with exponential backoff (1s→2s→4s)
    • Automatic transient error detection and retry
    • Support AUTH types: AUTO, PLAIN, LOGIN, CRAM-MD5
    • Support encryption: SSL/TLS, STARTTLS, None
  • Add email placeholder expansion in interactive mode

    • Expand {report_id} in From/Reply-To addresses before display
    • Placeholders resolved from report directory context
  • Fix config key mapping inconsistency

    • Map email.mime.type to email.mime_type in env var transformation
    • Unify mime type configuration across file/env sources
  • Add SMTP documentation (doc/email-smtp.md)

    • Comprehensive usage guide for send-with-confirm and resend
    • SMTP URI format and percent encoding examples
    • Configuration methods and security best practices
    • CI/CD integration examples (GitHub Actions, GitLab CI, Jenkins)
    • Troubleshooting guide and FAQ
  • Add debug logging for multipart/alternative email generation

    • Log MimeType config value and includeHTML decision
    • Log email body format (HTML+text vs text-only)

…nality

- Add send-with-confirm subcommand with interactive/stdin modes
  - Interactive mode: prompts for recipients with pre-filled From/Reply-To
  - Stdin mode: reads recipients from stdin for CI/CD automation
  - Email preview before sending with confirmation prompt
  - Automatic .eml save on send failure

- Add resend subcommand for failed email retry
  - Load and resend previously saved .eml files
  - Support recipient editing and Message-ID regeneration
  - Preserve original message structure

- Implement SMTP sender with retry logic
  - 3 retry attempts with exponential backoff (1s→2s→4s)
  - Automatic transient error detection and retry
  - Support AUTH types: AUTO, PLAIN, LOGIN, CRAM-MD5
  - Support encryption: SSL/TLS, STARTTLS, None

- Add email placeholder expansion in interactive mode
  - Expand {report_id} in From/Reply-To addresses before display
  - Placeholders resolved from report directory context

- Fix config key mapping inconsistency
  - Map email.mime.type to email.mime_type in env var transformation
  - Unify mime type configuration across file/env sources

- Add SMTP documentation (doc/email-smtp.md)
  - Comprehensive usage guide for send-with-confirm and resend
  - SMTP URI format and percent encoding examples
  - Configuration methods and security best practices
  - CI/CD integration examples (GitHub Actions, GitLab CI, Jenkins)
  - Troubleshooting guide and FAQ

- Add debug logging for multipart/alternative email generation
  - Log MimeType config value and includeHTML decision
  - Log email body format (HTML+text vs text-only)
@canaria-computer canaria-computer merged commit 4ccab2e into main Jan 13, 2026
2 checks passed
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