Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.

Unreleased

v0.1.0 - 2026-10-07

Highlights

  • Vendor-free core for transactional email: message model, Sender interface, MIME assembly, templates and classified errors with no dependencies outside the standard library
  • Built-in SMTP, log and memory senders, plus the providertest conformance suite for provider adapters

Added

  • Address with ParseAddress/ParseAddressList validation on net/mail, accepting internationalized addresses
  • Message with To/Cc/Bcc, Reply-To, subject, text and HTML bodies, custom headers, tags and idempotency key; Validate rejects missing recipients or bodies, reserved headers and line breaks or control characters in header values
  • Sender interface, SendResult and SenderFunc
  • Error with Kind (invalid message, invalid address, rejected, throttled, transient, auth, unknown), sentinel errors for errors.Is, Temporary, Retryable, KindOf, IsRetryable and RetryAfter
  • BuildMIME assembling RFC 5322 single-part or multipart/alternative messages with 7bit, quoted-printable or base64 bodies, RFC 2047 headers, header folding, Date and Message-ID
  • Template rendering subject, text and HTML from strings or an fs.FS with HTML autoescaping, missingkey=error and single-line subjects
  • smtp sender with required STARTTLS or implicit TLS, AUTH PLAIN/LOGIN, timeouts, context cancellation, SMTPUTF8 checks and reply-code classification
  • smtp/smtptest in-process SMTP server with TLS, AUTH, failure injection and stalls
  • logsender writing messages to slog with bodies redacted by default
  • memsender capturing messages for tests with injectable failures
  • providertest conformance suite (RunAll, Harness) and DecodeMIME for adapters

Documentation

  • README and MkDocs site: guides for getting started, templates, SMTP, writing a provider adapter and the conformance suite, and v0.1.0 release notes