From a58326c5cbe9a73a6b204dac4b9f077d8cf886f4 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Wed, 30 Apr 2025 00:20:23 +0800 Subject: HALF WORK!: 2025-4-30 2 --- .../mail-server/aws-sendmail/delivers/aws.ts | 35 ++++++++++++++-------- 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'services/docker/mail-server/aws-sendmail/delivers/aws.ts') diff --git a/services/docker/mail-server/aws-sendmail/delivers/aws.ts b/services/docker/mail-server/aws-sendmail/delivers/aws.ts index 9fe7bec..ecc9956 100644 --- a/services/docker/mail-server/aws-sendmail/delivers/aws.ts +++ b/services/docker/mail-server/aws-sendmail/delivers/aws.ts @@ -1,8 +1,7 @@ import { SendEmailCommand, SESv2Client } from "@aws-sdk/client-sesv2"; import { AwsContext } from "../aws.ts"; -import { Mail } from "../mail.ts"; -import { MailDeliverer } from "../deliver.ts"; +import { Mail, MailDeliverer } from "../mail.ts"; export class AwsMailDeliverer extends MailDeliverer { private _ses; @@ -16,16 +15,28 @@ export class AwsMailDeliverer extends MailDeliverer { } 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."); + let awsMessageId: string | undefined; + + try { + const sendCommand = new SendEmailCommand({ + Content: { + Raw: { Data: mail.encodeUtf8() }, + }, + }); + + const res = await this._ses.send(sendCommand); + awsMessageId = res.MessageId; + } catch (cause) { + mail.throwDeliverError( + this, + "failed to call send-email api of aws.", + cause, + ); + } + + if (awsMessageId == null) { + mail.setDelivered(this, new Error("No message id is returned from aws.")); } - mail.aws_message_id = res.MessageId; + mail.awsMessageId = awsMessageId ?? null; } } -- cgit v1.2.3