serendipity_hq/aws-ses-monitor-bundle
A Symfony bundle for monitoring Amazon SES: ingest SNS bounce, complaint, and delivery notifications, track sending statistics, and expose configurable dashboards and alerts to keep email deliverability healthy.
composer.json constraints and README: it is only a direct fit if your application still uses SwiftMailer. On Symfony Mailer/Symfony 6+, expect to write an adapter rather than use the built-in SwiftMailer filter.composer require serendipity_hq/aws-ses-monitor-bundle
config/bundles.php or your legacy AppKernel.README.md for config keys, command names, routes, and SwiftMailer setup.DependencyInjection/Configuration.php for the real configuration tree.Command/ for the SES/SNS setup command.Controller/ and Resources/config/ for the SNS endpoint and service wiring.bin/console list | grep -i ses
Run it in a sandbox AWS account first; it may create topics, subscriptions, and SES notification settings.bin/console debug:router | grep -i sns
Subscribe the SNS topic to that HTTPS endpoint and confirm the subscription. The endpoint must be publicly reachable with valid TLS.MessageEvent listener or transport decorator that checks the bundle’s suppression repository before send. Do not depend on SwiftMailer events in a modern stack.MessageId and ignore duplicates. SNS delivery is at-least-once, and retries are normal.[email protected], [email protected], and delivery simulator addresses to generate real events without harming real recipients.Type, MessageId, etc.; the Message field is a JSON string containing the SES notification. Parse the envelope, then parse Message.SubscriptionConfirmation before notifications. The endpoint must confirm it, and production signature validation should not be disabled.bounceType (Permanent, Transient, Undetermined). Suppress permanent/undetermined hard bounces; do not permanently suppress transient bounces. Always suppress complaints.Resources/config/doctrine and the README. If it uses cache or another store, verify persistence and clearing behavior.bin/console debug:config <bundle-alias> to confirm keys are actually recognized.How can I help you explore Laravel packages today?