---
title: Amazon SES
description: Send email through the AWS SES v2 API.
icon: Truck
source: "src/transports/ses.ts"
---

Send email through the AWS SES v2 API.

<Callout title="The one rule">Create this transport under the matching sently channel sender.</Callout>

## Configuration

| Option | Type | Default or requirement |
| --- | --- | --- |
| `accessKeyId` | `string` | required |
| `secretAccessKey` | `string` | required |
| `region` | `string` | us-east-1 |
| `sessionToken` | `string` | optional |
| `dkim` | `DKIMConfig` | optional |

<Steps>
  <Step title="Configure the transport">

```ts
import { createMailer } from "sently/mailer";
import { SESTransport } from "sently/transports/ses";

const sender = createMailer({ transport: new SESTransport({ accessKeyId: "...", secretAccessKey: "..." }) });
```

  </Step>
  <Step title="Send with the channel API">

```ts
await sender.send({ from: "hello@example.com", to: "person@example.com", subject: "Hello", text: "Hi" });
```

  </Step>
</Steps>

<Accordions><Accordion title="Should I call the provider SDK?">No. Use the sently sender; provider-specific extras stay on the transport instance.</Accordion></Accordions>

<Cards><Card title="Email channel" href="/docs/channels/email" /></Cards>
