Gulum 68366ad8c9 INBOX-3: SMTP send + Gmail threading (POST /api/requests/{id}/send)
- IGmailMailSender (mockable) + MailKit GmailMailSender (smtp.gmail.com:587 STARTTLS, App
  Password). SendReplyService builds a threaded reply: In-Reply-To = original Message-Id,
  References = stored chain + original (deduped), Subject = 'Re: ' (no double-prefix); sends,
  then sets Status=Answered + AnsweredAt + stores sent body in DraftReply. Never auto-sends.
- POST /api/requests/{id}/send {body}: 200 updated RequestDto; 404 unknown; 503 MailNotConfigured;
  502 MailAuthFailed (UI hint: re-enter App Password). No entity change (no migration).
- Tests (fake SMTP): threading headers, Answered transition, no-double-Re, not-configured +
  auth-failure keep status; BuildMimeMessage header mapping. Live send gated on App Password.
2026-06-06 09:50:24 +02:00
2023-10-30 16:39:14 +01:00
2023-10-30 16:39:14 +01:00
2023-10-16 20:51:16 +02:00

GerbilManager

  • GerbilManagerWebAPI/ — ASP.NET Core backend (Swagger unter /swagger)
  • gerbil-manager-web/ — React-Frontend (Vite + TypeScript), siehe gerbil-manager-web/README.md

Requirements

Install ef:

dotnet tool install --global dotnet-ef

Used cmd´s

Start containers

docker compose up

Create the initial database

dotnet ef database update

Create an migration script

dotnet ef migrations add

Docker

force compose rebuild

docker-compose build --no-cache

Frontend (gerbil-manager-web)

cd gerbil-manager-web npm install npm run dev

TODO:

  • Backup docker volume database
  • run "dotnet ef database update" if no database exist.
Description
No description provided
Readme 13 MiB
Languages
C# 43%
TypeScript 34.5%
Python 18%
CSS 3.7%
Shell 0.5%
Other 0.1%