diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-04-30 00:20:23 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-04-30 13:32:43 +0800 |
commit | a58326c5cbe9a73a6b204dac4b9f077d8cf886f4 (patch) | |
tree | d01c21a1b621cc9fd738a816c4a4c4138eecae07 /services/docker/mail-server/aws-sendmail/deliver.ts | |
parent | 84148346e29547cfba92dd697be9bbf31a23a926 (diff) | |
download | crupest-a58326c5cbe9a73a6b204dac4b9f077d8cf886f4.tar.gz crupest-a58326c5cbe9a73a6b204dac4b9f077d8cf886f4.tar.bz2 crupest-a58326c5cbe9a73a6b204dac4b9f077d8cf886f4.zip |
HALF WORK!: 2025-4-30 2
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/deliver.ts')
-rw-r--r-- | services/docker/mail-server/aws-sendmail/deliver.ts | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/services/docker/mail-server/aws-sendmail/deliver.ts b/services/docker/mail-server/aws-sendmail/deliver.ts deleted file mode 100644 index e0c6e1c..0000000 --- a/services/docker/mail-server/aws-sendmail/deliver.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Mail } from "./mail.ts"; - -class MailDeliverError extends Error { - constructor( - message: string, - options: ErrorOptions, - public readonly mail: Mail, - ) { - super(message, options); - } -} - -type MailDeliverHook = (mail: Mail) => Promise<void>; - -export abstract class MailDeliverer { - preHooks: MailDeliverHook[] = []; - postHooks: MailDeliverHook[] = []; - - constructor(public readonly destination: string) {} - - protected doPrepare(_mail: Mail): Promise<void> { - return Promise.resolve(); - } - protected abstract doDeliver(mail: Mail): Promise<void>; - protected doFinalize(_mail: Mail): Promise<void> { - return Promise.resolve(); - } - - async deliverRaw(raw: string): Promise<void> { - const mail = new Mail(raw); - await this.deliver(mail); - } - - async deliver(mail: Mail): Promise<void> { - this.doPrepare(mail); - - for (const hook of this.preHooks) { - await hook(mail); - } - - await this.doDeliver(mail); - - for (const hook of this.postHooks) { - await hook(mail); - } - - await this.doFinalize(mail); - } - - protected throwError( - reason: string, - mail: Mail, - cause?: unknown, - ): never { - throw new MailDeliverError( - `Failed to deliver mail to ${this.destination}: ${reason}`, - { cause }, - mail, - ); - } -} |