46 lines
2.0 KiB
Markdown
46 lines
2.0 KiB
Markdown
# jnj_scan_failed_sent_v1.0.py
|
|
|
|
**Verze:** 1.0 · **Datum:** 2026-06-16
|
|
|
|
JNJ-native (pywin32 / MAPI). Projde **Sent Items za posledních N dní** (default 60),
|
|
najde **podezřelé = pravděpodobně neodeslané** e-maily, uloží je jako `.msg`
|
|
a vypíše, které příznaky se trefily. **Nic neodesílá ani nemaže.**
|
|
|
|
## Příznaky (čteno ze ŽIVÉ položky)
|
|
- **FAIL_BODY** (silný) — tělo / ReportText obsahuje „could not be sent",
|
|
„SendAsDenied", „permission to send the message on behalf",
|
|
„TransportSend operation has failed", „MapiExceptionSendAsDenied".
|
|
- **SENDAS_BUZ** (silný) — `PrimarySendAccount` (0x0E28) / SentRepresenting (0x0065)
|
|
/ Sender (0x0C1F) obsahuje `buzalka.cz` → posíláno přes špatnou identitu.
|
|
- **NO_MSGID** (slabý) — chybí Internet Message-ID (0x1035); může být i
|
|
provizorní kopie, co se později dokončí.
|
|
|
|
`STRONG_*` soubory = silný příznak (skoro jistě neodesláno).
|
|
`weak_*` soubory = jen NO_MSGID.
|
|
|
|
## Spuštění (JNJ stroj s Outlookem)
|
|
```
|
|
pip install pywin32
|
|
python jnj_scan_failed_sent_v1.0.py
|
|
```
|
|
|
|
## Konfigurace
|
|
- `DAYS` = okno (default 60).
|
|
- `OUTPUT_DIR` = kam ukládat `.msg` (default `C:\Users\vbuzalka\sent_suspects`).
|
|
- `INCLUDE_NO_MSGID` = ukládat i jen-NO_MSGID položky (default True; dej False,
|
|
když chceš jen tvrdé FAIL/SENDAS).
|
|
- `SENDER_SMTP` = účet, jehož Sent Items se skenuje.
|
|
|
|
## Postup
|
|
1. Spusť na JNJ → ve výpisu uvidíš podezřelé + uložené `.msg`.
|
|
2. Přines `.msg` z `OUTPUT_DIR` domů → olefilem je projdeme a potvrdíme,
|
|
které opravdu neodešly (a komu je třeba poslat znovu se správným From).
|
|
|
|
## Pozn.
|
|
- Okno 60 dní = výkon (řazeno SentOn desc, starší se přeskočí brzy).
|
|
- Detekce funguje nad **živou** položkou (čerstvý SaveAs) — proto se pouští
|
|
přímo na JNJ, ne nad starými batch kopiemi.
|
|
- Hlavní příčina selhání: From = `vladimir.buzalka@buzalka.cz` na účtu
|
|
`vbuzalka@its.jnj.com` bez SendAs → Exchange odmítne. Viz paměť
|
|
project_jnj_unsent_detection.
|