fix(07): propagate Exchange connection error, add folder selection for Exchange
Tessera CI/CD / Lint & Type Check (push) Waiting to run
Tessera CI/CD / Tests (push) Blocked by required conditions
Tessera CI/CD / Build & Deploy (push) Blocked by required conditions

- testConnection now returns { success, message? } instead of boolean so
  admins see the actual EWS/IMAP error in the UI rather than "Unbekannter Fehler"
- Exchange provider: resolveFolder() maps folder string to WellKnownFolderName
  (Inbox, SentItems, DeletedItems, Drafts, JunkEmail + German aliases)
- InboxConfigForm: folder field now shown for both IMAP and Exchange protocols
  with Exchange-specific help text listing valid well-known names
- Controller returns testConnection result directly (no more redundant wrapping)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 09:33:13 +02:00
parent 01ff137f43
commit 9b453e3ed3
8 changed files with 68 additions and 49 deletions
@@ -303,22 +303,23 @@ export function InboxConfigForm() {
</div>
)}
{/* IMAP-only: Ordner */}
{form.protocol === 'imap' && (
<div>
<label htmlFor="dkv-folder" className={labelCls}>
{t('form.folder')} *
</label>
<input
id="dkv-folder"
type="text"
required
className={inputCls}
value={form.folder}
onChange={(e) => update('folder', e.target.value)}
/>
</div>
)}
{/* Ordner / Postfach */}
<div>
<label htmlFor="dkv-folder" className={labelCls}>
{t('form.folder')}
</label>
<input
id="dkv-folder"
type="text"
placeholder={form.protocol === 'exchange' ? 'Inbox' : 'INBOX'}
className={inputCls}
value={form.folder}
onChange={(e) => update('folder', e.target.value)}
/>
{form.protocol === 'exchange' && (
<p className="mt-1 text-xs text-muted-foreground">{t('form.folderExchangeHelp')}</p>
)}
</div>
{/* Exchange-only: Domain */}
{form.protocol === 'exchange' && (
+2 -1
View File
@@ -318,7 +318,8 @@
"port": "Port",
"encryption": "Verschluesselung",
"encryptionNone": "Keine",
"folder": "Ordner",
"folder": "Ordner / Postfach",
"folderExchangeHelp": "Standard-Postfaecher: Inbox, SentItems, DeletedItems, Drafts, JunkEmail",
"senderFilter": "Absenderfilter",
"pollInterval": "Abrufintervall",
"pollIntervalSuffix": "Minuten",
+2 -1
View File
@@ -318,7 +318,8 @@
"port": "Port",
"encryption": "Encryption",
"encryptionNone": "None",
"folder": "Folder",
"folder": "Folder / Mailbox",
"folderExchangeHelp": "Common mailboxes: Inbox, SentItems, DeletedItems, Drafts, JunkEmail",
"senderFilter": "Sender Filter",
"pollInterval": "Poll Interval",
"pollIntervalSuffix": "Minutes",