sesmtp
v0.1.0
Published
Amazon SES transport over its SMTP interface, built on smtp-kit.
Readme
sesmtp
Amazon SES transport over its SMTP interface, built on smtp-kit.
sesmtp adapts smtp-kit's injectable SMTP adapter to Amazon SES's SMTP interface: no AWS SDK, node:net/node:tls only.
Install
npm i sesmtpimport { createMailMessage } from "mailmessage";
import { createSesTransport } from "sesmtp";
const transport = createSesTransport({
region: "eu-west-1",
username: process.env.SES_SMTP_USERNAME!,
password: process.env.SES_SMTP_PASSWORD!,
from: "[email protected]",
configurationSet: process.env.SES_CONFIGURATION_SET,
});
await transport.send({
message: createMailMessage({
from: "[email protected]",
to: ["[email protected]"],
subject: "Hello",
text: "Sent through SES SMTP.",
}),
});Environment
| Variable | Default | Notes |
| --- | --- | --- |
| SES_REGION | eu-west-1 | Selects email-smtp.<region>.amazonaws.com. |
| SES_SMTP_USERNAME | — | SES SMTP username, not an AWS access key. |
| SES_SMTP_PASSWORD | — | SES SMTP password, not an AWS secret key. |
| SES_CONFIGURATION_SET | — | Optional; sets X-SES-CONFIGURATION-SET. |
| AUTH_EMAIL_FROM | [email protected] | Envelope/header default sender. |
| AUTH_EMAIL_REPLY_TO | — | Optional default Reply-To. |
Connects to email-smtp.<region>.amazonaws.com:587 with STARTTLS by default (465/2465 use implicit TLS instead).
SES SMTP credentials come from the SES console under SMTP settings → Create SMTP credentials. They are a separate IAM user's SMTP username/password, generated specifically for this purpose — they are not your AWS access key ID and secret access key, which do not work over SMTP AUTH.
Non-goals
Connection pooling, retries, queues, and the AWS SDK are out of scope; a fresh connection is dialed per send (ponytail: single-flight dial, add pooling if SES throughput requires it).
MIT.
