fix parsing ricevute

This commit is contained in:
2026-06-18 16:31:29 +02:00
parent 4c90a7c1a3
commit 058c550cd2
10 changed files with 731 additions and 15 deletions
+23 -7
View File
@@ -86,17 +86,23 @@ class SmtpSender:
body_text: str,
body_html: str | None = None,
attachments: list[dict] | None = None,
preset_message_id: str | None = None,
) -> tuple[MIMEMultipart, str]:
"""
Costruisce il messaggio MIME per la PEC.
Args:
to_addresses: destinatari principali
cc_addresses: destinatari in copia (può essere vuoto)
subject: oggetto del messaggio
body_text: corpo in testo semplice
body_html: corpo HTML opzionale
attachments: lista di dict {filename, content: bytes, content_type}
to_addresses: destinatari principali
cc_addresses: destinatari in copia (può essere vuoto)
subject: oggetto del messaggio
body_text: corpo in testo semplice
body_html: corpo HTML opzionale
attachments: lista di dict {filename, content: bytes, content_type}
preset_message_id: Message-ID pre-generato (opzionale). Se fornito viene
usato direttamente invece di generarne uno nuovo con
make_msgid(). Permette di settare message_id_header
nel DB PRIMA dell'invio SMTP, eliminando la race
condition con il binding delle ricevute di accettazione.
Returns:
(msg MIME, message_id_header)
@@ -115,7 +121,9 @@ class SmtpSender:
body_container = msg
# Headers obbligatori
message_id = make_msgid(domain="pechub.local")
# Se il chiamante ha pre-generato il Message-ID (per committarlo nel DB prima
# dell'invio SMTP), lo usiamo direttamente. Altrimenti ne generiamo uno nuovo.
message_id = preset_message_id if preset_message_id else make_msgid(domain="pechub.local")
msg["From"] = self.mailbox.email_address
msg["To"] = ", ".join(to_addresses)
if cc_addresses:
@@ -171,6 +179,7 @@ class SmtpSender:
body_text: str,
body_html: str | None = None,
attachments: list[dict] | None = None,
preset_message_id: str | None = None,
) -> tuple[str, bytes]:
"""
Invia la PEC via SMTP.
@@ -180,6 +189,12 @@ class SmtpSender:
- Porta 587 con STARTTLS (use_tls=False, porta 587)
- Porta 25 plain (uso sconsigliato)
Args:
preset_message_id: Message-ID pre-generato da usare nell'header Message-ID.
Deve essere gia' stato committato nel DB su msg.message_id_header
prima di chiamare questo metodo, per eliminare la race condition
con il binding delle ricevute PEC.
Returns:
(message_id_header, raw_eml_bytes)
@@ -194,6 +209,7 @@ class SmtpSender:
body_text=body_text,
body_html=body_html,
attachments=attachments,
preset_message_id=preset_message_id,
)
raw_eml: bytes = msg.as_bytes()