3_download_attachments_v1.4.py
Krok 3 pipeline — stahuje skutečné přílohy (is_inline=False) z Mongo emailů přes Graph API do /mnt/Emails/<schránka>/Attachments/. Deduplikace podle SHA256 obsahu.
Nové ve verzi 1.4
| Typ přílohy |
@odata.type |
Co skript dělá |
| File |
#microsoft.graph.fileAttachment |
Stáhne přes /$value, uloží binárku |
| Item (vnořený email) |
#microsoft.graph.itemAttachment |
$expand=...itemAttachment/item, sestaví .eml z hlaviček a body vnitřní zprávy |
| Reference (OneDrive/SharePoint link) |
#microsoft.graph.referenceAttachment |
Žádný file — uloží jen reference_url do Mongo |
Plus:
- Retry s exponenciálním backoffem na 429/500/502/503/504 (1s, 2s, 4s; respektuje
Retry-After).
- Permanentní označení chyb v Mongo per-attachment:
attachment_missing: True + attachment_missing_at: <UTC> při 404 (email/příloha už neexistuje v mailboxu)
attachment_reference: True + reference_url: <URL> u referenceAttachment
- Tagované přílohy se při dalším běhu automaticky přeskočí (bez
--force-recheck).
Argumenty
| Argument |
Povinný |
Hodnoty |
Default |
Popis |
--mailbox |
ne |
e-mail |
(všechny) |
Schránka = kolekce v Mongo. Bez argumentu projede všechny kolekce mimo NON_MAILBOX_COLLECTIONS a SKIP_MAILBOXES |
--limit N |
ne |
int |
0 |
Per schránka, jen prvních N emailů (test) |
--force-recheck |
ne |
flag |
false |
Znovu ověří i emaily kde přílohy mají file_hash nebo attachment_missing nebo attachment_reference |
--no-indexes |
ne |
flag |
false |
Nevytváří indexy na attachments_index |
SKIP_MAILBOXES (hardcoded)
| Schránka |
Důvod |
vbuzalka@its.jnj.com |
JNJ tenant, nemáme Graph API přístup. Bez --mailbox se tiše přeskočí. S explicitním --mailbox vbuzalka@its.jnj.com skript skončí exit kódem 2. |
Statistiky per schránka
| Kategorie |
Význam |
ok |
emaily zpracované bez chyby (všechny přílohy hotové) |
nove |
nové soubory uložené (NEW + NEW(eml)) |
dup |
hash už existuje (jen ref_count++) |
skip |
S/MIME (.p7m/.p7s/...) nebo inline obrázek |
miss |
404 — označeno attachment_missing (nepokračuje se) |
ref |
referenceAttachment — uložen jen URL |
err |
tranzientní chyba (5xx, timeout) — bude retry při dalším běhu |
Varianty volání
Sledování průběhu