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 strategy —
SesEmailStrategy(ext_ses/strategy.py), an implementation of the coreEmailDeliveryStrategyinterface, registered assesviaregister_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
SendEmailAPI with a single recipient, aName <email>source built from the message or the configured defaults, an HTML body (plus a text part when the message carries one), an optionalReply-To, and an optional SES configuration set. - Nothing else — no webhook endpoints, Temporal workflows, schedules, admin pages, GraphQL fields, or event subscriptions.
Setup¶
- 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 erroraiobotocore not installed. - Enable the extension for a channel from Settings > Extensions (per-channel activation via
ChannelExtension). - Make it the active email provider on Settings > Email: the page lists Amazon SES as a provider option (it checks that the
sesextension is installed) with fields for AWS region, configuration set, access key id, secret access key, and the default from address/name. Saving writes theemail_providerplatform 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_providersetting on every send: the setting's keys (minusprovider) are passed as constructor arguments. The constructor's parameters areregion,access_key_id,secret_access_key,default_from,default_from_name, and optionalconfiguration_set— note these are un-prefixed, unlike theaws_-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_batchloops over singleSendEmailcalls; no SES bulk API is used. - Every templated send is recorded in
notification_logswith the provider name and the SESMessageId. - Alternative email providers: built-in SMTP and console strategies ship with core; Elastic Email is available as another extension.