
By Strapi Team
Amazon SES provider for Strapi
released September 30, 2026
npm install @strapi/provider-email-amazon-ses# using yarn
yarn add @strapi/provider-email-amazon-ses
# using npm
npm install @strapi/provider-email-amazon-ses --save| Variable | Type | Description | Required | Default |
|---|---|---|---|---|
| provider | string | The name of the provider you use | yes | |
| providerOptions | object | Passed to the AWS SDK v3 SESClient constructor (see examples below) | yes | |
| providerOptions.region | string | AWS region for SES | no | us-east-1 |
| settings | object | Settings | no | {} |
| settings.defaultFrom | string | Default sender mail address | no | undefined |
| settings.defaultReplyTo | string | array | Default address or addresses the receiver is asked to reply to | no | undefined |
:warning: The Shipper Email (or defaultfrom) may also need to be changed in the
Email Templatestab on the admin panel for emails to send properly
When running on AWS infrastructure (EC2, ECS, EKS, Lambda, etc.), credentials are resolved from the instance or task IAM role. No access keys are required in configuration.
Path - ./config/plugins.js
module.exports = ({ env }) => ({
// ...
email: {
config: {
provider: 'amazon-ses',
providerOptions: {
region: env('AWS_REGION', 'us-east-1'),
},
settings: {
defaultFrom: 'myemail@protonmail.com',
defaultReplyTo: 'myemail@protonmail.com',
},
},
},
// ...
});Path - .env
AWS_REGION=us-east-1The AWS SDK resolves credentials in this order:
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)~/.aws/credentials)For local development or non-AWS environments:
Path - ./config/plugins.js
module.exports = ({ env }) => ({
// ...
email: {
config: {
provider: 'amazon-ses',
providerOptions: {
region: env('AWS_REGION', 'us-east-1'),
credentials: {
accessKeyId: env('AWS_ACCESS_KEY_ID'),
secretAccessKey: env('AWS_SECRET_ACCESS_KEY'),
},
},
settings: {
defaultFrom: 'myemail@protonmail.com',
defaultReplyTo: 'myemail@protonmail.com',
},
},
},
// ...
});Path - .env
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key
AWS_REGION=us-east-1The legacy node-ses format using key, secret, and amazon is still supported. The provider maps these to AWS SDK v3 options (credentials, endpoint, and region parsed from the amazon URL).
Path - ./config/plugins.js
module.exports = ({ env }) => ({
// ...
email: {
config: {
provider: 'amazon-ses',
providerOptions: {
key: env('AWS_SES_KEY'),
secret: env('AWS_SES_SECRET'),
amazon: `https://email.${env('AWS_SES_REGION', 'us-east-1')}.amazonaws.com`,
},
settings: {
defaultFrom: 'myemail@protonmail.com',
defaultReplyTo: 'myemail@protonmail.com',
},
},
},
// ...
});Path - .env
AWS_SES_KEY=your-access-key-id
AWS_SES_SECRET=your-secret-access-key
AWS_SES_REGION=us-east-1You may also use credentials: { key, secret } with region instead of top-level key / secret.
Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.
Submit
