SES Channel
An AWS SES email channel for the notification service. It handles the `email` message key and validates its own email payload schema.
bunx --bun shadcn@latest add https://krakstack.net/r/notification-channel-email-ses.jsonOverview
notification-channel-email-ses adds AWS SES email delivery to service-notification. It handles the email top-level key in notification messages, contributes the email payload type to NotificationChannels, and keeps the SES-specific payload schema beside the channel implementation.
Included Files
services/notification/channels/ses/index.ts- SES channel, config service, and channel layerservices/notification/channels/ses/schema.ts- SES email payload schema
Usage
import { Effect, Layer } from "effect";
import { NotificationService } from "@/services/notification";
import { NotificationChannelRegistry } from "@/services/notification/channels";
import { SesNotificationChannel } from "@/services/notification/channels/ses";
const notificationChannelsLayer = Layer.effect(
NotificationChannelRegistry,
Effect.gen(function* () {
const email = yield* SesNotificationChannel;
return NotificationChannelRegistry.make(email);
}),
).pipe(Layer.provide(SesNotificationChannel.layer));
const notificationServiceLayer = NotificationService.layer.pipe(
Layer.provide(notificationChannelsLayer),
);
const program = Effect.gen(function* () {
const notifications = yield* NotificationService;
yield* notifications.send({
email: {
to: "[email protected]",
subject: "Deploy succeeded",
html: "<h1>main -> production</h1><p>All checks passed.</p>",
},
});
});
await Effect.runPromise(
program.pipe(Effect.provide(notificationServiceLayer)),
);The payload can include from, or the channel can read NOTIFICATION_EMAIL_FROM from the environment.
Merging With Other Channels
Use SesNotificationChannel.layer when building a multi-channel registry. Pull SesNotificationChannel and any other channel services into one NotificationChannelRegistry.make(...), then provide that registry to NotificationService.layer. See the service-notification docs for a complete merge example.
Environment Variables
SES_REGION- AWS SES regionSES_ACCESS_KEY_ID- AWS access key IDSES_SECRET_ACCESS_KEY- AWS secret access keyNOTIFICATION_EMAIL_FROM- Optional default sender address when the payload omitsfrom