- Introduced SqsSesPollerWorker to poll messages from SQS and process SES events. - Implemented SesEventProcessingService to handle SES event payloads and store them in the database. - Updated DevMockSenderWorker to support new SES sending methods and improved logging for unsubscribe headers. - Added AWS SDK for SQS to project dependencies.
Send Engine(發送引擎)
此專案為獨立的發送引擎,負責寄送、節流、退信處理與追蹤。文件統一放在 docs/。
目標(MVP)
- 接收 Member Center 的訂閱事件(activated / unsubscribed / preferences.updated)
- 多租戶名單快照(依 tenant/list)且僅增量更新
- 管理 Campaign / Send Job 與排程
- 對接 ESP(Amazon SES + Mock)
- 記錄投遞結果與退信(必要時回寫 Member Center)
既定條件
- 與 Member Center 相同框架(C# .NET Core)
- Send engine 不提供跨租戶名單查詢
- 事件同步採 event/queue 或 webhook(二擇一即可)
- DB:PostgreSQL
範圍(第一階段)
- 事件 ingest 與名單增量同步
- Campaign / Send Job 基本流程
- Sender Adapter(至少一種 ESP)
- 投遞與退信記錄
- SES 回流建議採
Configuration Set -> SNS -> SQS -> Worker
非目標(暫不處理)
- 自建 SMTP server
- 跨租戶名單查詢
- 行銷自動化或行為追蹤
文件
docs/DESIGN.md:系統設計總覽、核心模組與資料流docs/FLOWS.md:主要業務流程(同步、寄送、退信)docs/OPENAPI.md:API 規格說明與補充規則docs/SCHEMA.sql:資料庫 schema(PostgreSQL)docs/TECH_STACK.md:技術棧與選型docs/INSTALL.md:安裝、初始化與維運指令docs/USE_CASES.md:需求用例(角色、情境、驗收)
專案結構
mass_mail_engine/
├── src/
│ ├── SendEngine.Api/ # REST API(事件 ingest、送信、管理 API)
│ ├── SendEngine.Installer/ # 安裝與初始化 CLI(migrate/init/admin)
│ ├── SendEngine.Application/ # 應用層介面與 DTO
│ ├── SendEngine.Infrastructure/# EF Core、ESP Adapter、服務實作
│ └── SendEngine.Domain/ # 領域實體與常數
├── docs/ # 專案文件
├── .vscode/ # 本機開發啟動與工作設定
├── SendEngine.sln # Solution
└── README.md
Build
使用 VS Code Run Build Task(預設執行 dotnet build SendEngine.sln)。
目前待辦
- SES/SNS 簽章完整驗證(目前
Ses__SkipSignatureValidation=false僅檢查 header 存在) - 事件重試/DLQ 策略補強(目前主要依 SQS redrive policy)
- recipient 狀態機擴充(delivery/open/click 的完整優先序與狀態轉換)
Description
Languages
C#
99.1%
Dockerfile
0.9%