aboutsummaryrefslogtreecommitdiff
path: root/services/docker/mail-server/aws-sendmail/main.ts
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-04-10 15:12:46 +0800
committerYuqian Yang <crupest@crupest.life>2025-04-29 01:38:30 +0800
commit6aeff979ada4a1775bddb87a0ccad354faaa8093 (patch)
treef21bf38bea4d48c21df6209f65ef4726d577ece8 /services/docker/mail-server/aws-sendmail/main.ts
parent1238ea1cba60316a641b8755b8c6c12e42badfbd (diff)
downloadcrupest-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.ts44
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();
+}