import { SendEmailCommand, SESv2Client } from "@aws-sdk/client-sesv2"; import { AwsContext } from "../aws.ts"; import { Mail } from "../mail.ts"; import { MailDeliverer } from "../deliver.ts"; export class AwsMailDeliverer extends MailDeliverer { private _ses; constructor(readonly aws: AwsContext) { super("aws"); const { region, credentials } = aws; this._ses = new SESv2Client({ region, credentials }); } protected override async doDeliver(mail: Mail): Promise { const sendCommand = new SendEmailCommand({ Content: { Raw: { Data: mail.encodeUtf8() }, }, }); const res = await this._ses.send(sendCommand); if (res.MessageId == null) { throw Error("No message id is returned from aws."); } mail.aws_message_id = res.MessageId; } }