Fix Serilog email sink config for v4 API breaking changes

Serilog.Sinks.Email v4 renamed all configuration parameters from their
v2 names. The old names were silently ignored, so no error alert emails
were ever sent.

Parameter renames applied across all 6 appsettings.json and docker-compose:
  fromEmail → from
  toEmail   → to
  mailServer → host
  networkCredential → credentials
  enableSsl: true → connectionSecurity: StartTls
  emailSubject → subject
  outputTemplate → body
  batchPostingLimit / period removed (v4 batching uses a separate overload)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 21:57:06 +03:00
parent 1bcf95d8d4
commit 8679bd1efd
7 changed files with 78 additions and 90 deletions
+36 -36
View File
@@ -35,13 +35,13 @@ services:
- Ai__Ollama__EmbeddingModel=${Ai__Ollama__EmbeddingModel:-nomic-embed-text}
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/rag-api:/app/logs
networks:
@@ -85,13 +85,13 @@ services:
- Matcher__DeepScoreTopN=${Matcher__DeepScoreTopN:-5}
- Matcher__MaxJobTextChars=${Matcher__MaxJobTextChars:-60000}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/cv-matcher-api:/app/logs
networks:
@@ -126,13 +126,13 @@ services:
- FileStorage__Path=${FileStorage__Path:-Files}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/email-api:/app/logs
- ${FILES_PATH:-/opt/myai/files}:/app/Files
@@ -201,13 +201,13 @@ services:
- Cors__AllowedOrigins__0=${Cors__AllowedOrigins__0:-}
- Cors__AllowedOrigins__1=${Cors__AllowedOrigins__1:-}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/api:/app/logs
- ${FILES_PATH:-/opt/myai/files}:/app/Files
@@ -232,13 +232,13 @@ services:
- Jobs__Tasks__0__Interval=${Jobs__CvStorageCleanupInterval:-01:00:00}
- Jobs__Tasks__0__Parameters__MaxTotalSizeMegabytes=${Jobs__CvStorageMaxTotalSizeMegabytes:-40}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/cv-cleanup-job:/app/logs
- ${FILES_PATH:-/opt/myai/files}:/app/Files
@@ -283,13 +283,13 @@ services:
- Jobs__Tasks__0__Enabled=${Jobs__CvSearchEnabled:-true}
- Jobs__Tasks__0__Interval=${Jobs__CvSearchInterval:-00:00:30}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__from=${Serilog__WriteTo__2__Args__from:-}
- Serilog__WriteTo__2__Args__to=${Serilog__WriteTo__2__Args__to:-}
- Serilog__WriteTo__2__Args__host=${Serilog__WriteTo__2__Args__host:-}
- Serilog__WriteTo__2__Args__credentials__userName=${Serilog__WriteTo__2__Args__credentials__userName:-}
- Serilog__WriteTo__2__Args__credentials__password=${Serilog__WriteTo__2__Args__credentials__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
- Serilog__WriteTo__2__Args__connectionSecurity=${Serilog__WriteTo__2__Args__connectionSecurity:-StartTls}
volumes:
- ${LOGS_PATH:-/opt/myai/logs}/cv-search-job:/app/logs
- ${FILES_PATH:-/opt/myai/files}:/app/Files