feat(mail): map standard IMAP folders per profile

This commit is contained in:
2026-08-19 21:27:42 +02:00
parent 393331574a
commit e0e00d7000
13 changed files with 243 additions and 33 deletions
+38
View File
@@ -629,6 +629,44 @@ manifest = ModuleManifest(
],
},
),
DocumentationTopic(
id="mail.profile-standard-folder-mappings",
title="Map standard folders for an IMAP profile",
summary="Store Inbox, Sent, Drafts, Trash, Archive, and Junk mappings on the reusable Mail profile and populate them from bounded IMAP discovery.",
body=(
"Folder names are profile/server metadata, not Campaign settings. An authorized profile administrator may enter names directly or use folder discovery; empty mappings retain automatic behavior. Existing imap.sent_folder values are presented and persisted as the Sent mapping, while the compatibility field remains synchronized for consumers that still read it. A Campaign-specific Sent-folder override remains authoritative for that Campaign and is not rewritten by profile discovery. Folder discovery lists provider-visible names without creating, renaming, moving, or deleting remote folders."
),
layer="configured",
documentation_types=("admin", "user"),
audience=("mail_admin", "campaign_admin", "mail_user"),
order=40,
conditions=(
DocumentationCondition(
required_modules=("mail",),
required_scopes=("mail:profile:read",),
any_scopes=("mail:profile:write", "mail:profile:write_own", "mail:profile:test"),
),
),
links=(
DocumentationLink(label="Mail profiles", href="/settings?section=mail-profiles", kind="runtime"),
DocumentationLink(label="Mail handbook", href="govoplan-mail/docs/MAIL_HANDBOOK.md", kind="repository"),
),
related_modules=("campaigns",),
metadata={
"kind": "workflow",
"route": "/settings?section=mail-profiles",
"screen": "Mail profiles",
"section": "IMAP standard folder mappings",
"help_contexts": ["mail.profiles", "mail.admin.profiles"],
"steps": [
"Open an editable IMAP server in a reusable Mail profile.",
"Choose Detect folders to load the provider-visible folder names, or enter exact names manually.",
"Apply the detected mappings, review every role, and leave uncertain roles empty for automatic behavior.",
"Save the profile and reload it to verify the mappings were retained.",
],
"verification": "Confirm legacy Sent-only profiles show the same effective Sent mapping, and confirm a Campaign-local Sent override remains unchanged.",
},
),
DocumentationTopic(
id="mail.bounce-processing",
title="Delivery-status and bounce processing",