Skip to content

Amazon SES

Amazon SES email delivery. Registers an email delivery strategy named ses with the notification module's strategy pool, sending transactional email (order notifications, staff alerts, password resets, OTP mail) through the AWS Simple Email Service SendEmail API via aiobotocore. Choose it when your transactional email should ride your AWS account instead of SMTP or a third-party email API.

At a glance

Extension id ses
Category communication
Version 0.0.1
Provides Email delivery strategy (ses)
External account AWS — access key id / secret access key (or ambient AWS credentials)

What It Provides

  • Email delivery strategySesEmailStrategy (ext_ses/strategy.py), an implementation of the core EmailDeliveryStrategy interface, registered as ses via register_email_strategy("ses", SesEmailStrategy) on activation. Registration is claimed in the registration ledger and released if the extension is deactivated — see Email delivery in Building Extensions.
  • Each send calls the SES SendEmail API with a single recipient, a Name <email> source built from the message or the configured defaults, an HTML body (plus a text part when the message carries one), an optional Reply-To, and an optional SES configuration set.
  • Nothing else — no webhook endpoints, Temporal workflows, schedules, admin pages, GraphQL fields, or event subscriptions.

Setup

  1. Once installed (or dev-linked in development), the extension is discovered at startup. Its only extra dependency is aiobotocore (pip install vectis[ses]); if the library is missing, sends fail gracefully with the error aiobotocore not installed.
  2. Enable the extension for a channel from Settings > Extensions (per-channel activation via ChannelExtension).
  3. Make it the active email provider on Settings > Email: the page lists Amazon SES as a provider option (it checks that the ses extension is installed) with fields for AWS region, configuration set, access key id, secret access key, and the default from address/name. Saving writes the email_provider platform setting that the notification service reads at send time.

Configuration Reference

Key Type Required Secret Description
aws_region string No No Defaults to us-east-1
aws_access_key_id string No Yes
aws_secret_access_key string No Yes
default_from_email string Yes No
default_from_name string No No Defaults to Vectis Commerce
configuration_set string No No

Note

This schema drives the generic Configure form on Settings > Extensions. The credentials actually used at send time come from the email_provider platform setting (managed on Settings > Email) — the notification service does not read the per-channel extension config when building the strategy.

Operational Notes

  • Send-time construction. The notification service builds the strategy from the email_provider setting on every send: the setting's keys (minus provider) are passed as constructor arguments. The constructor's parameters are region, access_key_id, secret_access_key, default_from, default_from_name, and optional configuration_set — note these are un-prefixed, unlike the aws_-prefixed schema keys above. If the setting is missing, names an unknown provider, or construction fails, delivery silently falls back to the console (dev logging) strategy and the failure is logged server-side.
  • Credentials are optional in code. Access key and secret are only passed to the SES client when set; left blank, the client is created without explicit credentials and aiobotocore's normal credential resolution applies.
  • Configuration set. When configured, every send includes ConfigurationSetName, so SES event publishing tied to that configuration set applies to Vectis mail.
  • Batch sends are sequential. send_batch loops over single SendEmail calls; no SES bulk API is used.
  • Every templated send is recorded in notification_logs with the provider name and the SES MessageId.
  • Alternative email providers: built-in SMTP and console strategies ship with core; Elastic Email is available as another extension.