# forward_offer_outlook_v1.1.py **Verze:** 1.1 · **Datum:** 2026-06-16 JNJ-native skript (pywin32 / MAPI). Pro daného lékaře vytvoří **skutečný Outlook Forward** jeho původní úvodní nabídky (zachová originál včetně data 31.05.2026, formátování i hlavičky). ## Změna oproti v1.0 - **Primárně hledá zprávu přímo podle jednoznačného `EntryID`** (MAPI) přes `Namespace.GetItemFromID(entry_id, store_id)` → nalezení „na první dobrou", nulová nejednoznačnost. - `EntryID` se bere z **JNJ SQLite** (`messages.entry_id`). Pro Huštáka je už předvyplněný v `TARGETS`. - **Fallback** (když EntryID nesedne) = původní heuristika subjekt + datum 31.05.2026 + příjemce To. ## Spuštění (JNJ stroj s Outlookem) ``` pip install pywin32 python forward_offer_outlook_v1.1.py ``` ## Konfigurace - `TARGETS` — list `{"email", "entry_id"}`. Defaultně jen **Hušták** (ostatní zakomentované; doplň jim EntryID ze SQLite, jinak poběží fallback). - `CC_RECIPIENTS` — Kocourková + Bartošová. - `ADD_INTRO` / `INTRO_HTML` — krátký úvod nad forwardem (`False` = čistý forward). - `ACTION` — `display` (default, jen otevře) / `draft` / `send`. ## Kde vzít EntryID dalších lékařů JNJ SQLite, tabulka `messages`: ```sql SELECT entry_id, subject, received_at, source FROM messages WHERE source LIKE '%%'; ``` (`message_id` je tam uložený jako `entryid:` + EntryID; sloupec `entry_id` obsahuje čistý EntryID. Internet Message-ID `<…@…>` v datech NENÍ — `.msg` jsou X-Unsent drafty, RFC Message-ID přiděluje až Exchange při odeslání.) ## Pozn. - `GetItemFromID` zkusí variantu se `store_id` i bez něj. - `display` nevyvolá Outlookový „program se snaží odeslat" dialog. - Když se nenajde ani EntryID, ani jednoznačný fallback → lékaře přeskočí.