From 6aeff979ada4a1775bddb87a0ccad354faaa8093 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Thu, 10 Apr 2025 15:12:46 +0800 Subject: HALF WORK! --- services/docker/mail-server/aws-sendmail/main.ts | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 services/docker/mail-server/aws-sendmail/main.ts (limited to 'services/docker/mail-server/aws-sendmail/main.ts') diff --git a/services/docker/mail-server/aws-sendmail/main.ts b/services/docker/mail-server/aws-sendmail/main.ts new file mode 100644 index 0000000..3a73a6f --- /dev/null +++ b/services/docker/mail-server/aws-sendmail/main.ts @@ -0,0 +1,44 @@ +import { MailTrafficDeliverer } from "./delivers/traffic.ts"; +import { Logger } from "./logger.ts"; + +class BugError extends Error { +} + +function warn(message: string) { +} + +class MailProcessor { + appendHeaders( + rawMail: string, + headers: [key: string, value: string][], + ): string { + const separatorMatch = rawMail.match(/(\r\n|\n)(\r\n|\n)/); + if (separatorMatch == null) { + throw new Error( + "No header/body separator (2 successive EOLs) found. Cannot append headers.", + ); + } + + if (separatorMatch[1] !== separatorMatch[2]) { + warn("Different EOLs (\\r\\n and \\n) found in mail!"); + } + + const headerStr = headers.map(([k, v]) => `${k}: ${v}${separatorMatch[1]}`) + .join(""); + const endOfHeadersIndex = separatorMatch.index! + separatorMatch[1].length; + return rawMail.slice(0, endOfHeadersIndex) + headerStr + + rawMail.slice(endOfHeadersIndex); + } +} + +class App { + readonly logger = new Logger("log"); + readonly mailTrafficDeliverer = new MailTrafficDeliverer(this.logger); + + constructor() { + } +} + +if (import.meta.main) { + const app = new App(); +} -- cgit v1.2.3