More bulk email options

Updated PR Series Submitted for Review

Phase 1: Email Adapter Foundation

  1. Added email provider base class for adapter system (1/4)

  2. Implemented Mailgun email provider adapter (2/4)

  3. Added email analytics adapter support with Mailgun implementation (3/4)

  4. Added email suppression adapter support with Mailgun implementation (4/4)


Phase 2: Amazon SES Integration for Sending Newsletters

  1. SES Email Adapter (1/3)

  2. SES Analytics + Integration + Admin UI (2/3)

  3. SES Newsletter Personalization (3/3)

New (config driven) SES Email Provider Newsletter Setting :drooling_face:

  • Mailgun remains the default but this replaces it if SES is setup (can only be one newsletter mail config setting)*

Included Setup and Documentation
Reference documentation, and over 70 tests, are included. Complete setup script included in phase 2 for configuring AWS SES to make it easier to review / test using a working Amazon environment.

1. config.development.json.example
• Example SES configuration for local testing
• Demonstrates all three configuration sections: mail, adapters.email, and emailAnalytics
• Uses placeholder credentials for safety

2. config.production.json.example
• Full production-ready configuration template
• Includes database, server, and privacy settings
• Follows SES configuration best practices

3. SES-SETUP.md
• Comprehensive AWS SES infrastructure guide
• Step-by-step CLI commands for:
• Creating SNS topics and SQS queues (with optimized attributes)
• Setting up subscriptions, policies, and configuration sets
• Defining event destinations
• Critical note: Explains why click tracking must be disabled in Ghost
• Lists required IAM permissions, verification commands, and troubleshooting steps

4. DOCS-SUGGESTION-SES.md
• Concise working draft content for Ghost Newsletter Docs
• Focused on technical users
• References the setup script approach
• Mirrors the structure and tone of the Mailgun documentation


I realize Ghost likely has higher-priority work right now, so I continued independently with the goal of making respectful, steady progress. Hopefully, this is a useful contribution to the community. It would be great to have the opportunity to discuss next steps and / or explore merging this upstream if there’s interest from Ghost maintainers. My sense is that the community has long wanted more newsletter provider options, I think it makes Ghost a more valuable platform, and it’s been an honor to help move that forward.