diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-04-10 15:12:46 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-04-29 01:38:30 +0800 |
commit | 6aeff979ada4a1775bddb87a0ccad354faaa8093 (patch) | |
tree | f21bf38bea4d48c21df6209f65ef4726d577ece8 /services/docker/mail-server/aws-sendmail/main.ts | |
parent | 1238ea1cba60316a641b8755b8c6c12e42badfbd (diff) | |
download | crupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.tar.gz crupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.tar.bz2 crupest-6aeff979ada4a1775bddb87a0ccad354faaa8093.zip |
HALF WORK!
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/main.ts')
-rw-r--r-- | services/docker/mail-server/aws-sendmail/main.ts | 44 |
1 files changed, 44 insertions, 0 deletions
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(); +} |