diff --git a/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/CsvImportButton.tsx b/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/CsvImportButton.tsx
index bc2d7e3..3cd3dad 100644
--- a/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/CsvImportButton.tsx
+++ b/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/CsvImportButton.tsx
@@ -111,6 +111,11 @@ export function CsvImportButton({ onImported }: CsvImportButtonProps) {
{/* Import mode inline dialog (below button, per UI-SPEC) */}
{showDialog && selectedFile && (
+
+
{t('csvFormatHelp')}
+
{t('csvFormatExample')}
+
+
{t('importMode')}
diff --git a/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/InboxConfigForm.tsx b/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/InboxConfigForm.tsx
index 8784ac6..c865bc3 100644
--- a/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/InboxConfigForm.tsx
+++ b/apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/InboxConfigForm.tsx
@@ -507,20 +507,36 @@ export function InboxConfigForm() {
{/* Inline test feedback */}
{testResult !== null && (
-
- {testResult.success
- ? t('form.testSuccess')
- : t('form.testFailed', {
- error: testResult.message ?? 'Unbekannter Fehler',
- })}
-
+
+
+ {testResult.success
+ ? t('form.testSuccess')
+ : t('form.testFailed', {
+ error: testResult.message ?? 'Unbekannter Fehler',
+ })}
+
+ {/* 401 hint for Exchange */}
+ {!testResult.success &&
+ form.protocol === 'exchange' &&
+ testResult.message?.includes('401') && (
+
+
{t('form.exchangeAuthHint')}
+
+ - {t('form.exchangeAuthHint1')}
+ - {t('form.exchangeAuthHint2')}
+ - {t('form.exchangeAuthHint3')}
+ - {t('form.exchangeAuthHint4')}
+
+
+ )}
+
)}
{/* Inline save feedback */}
diff --git a/apps/web/src/messages/de.json b/apps/web/src/messages/de.json
index eeeee96..dd19bb8 100644
--- a/apps/web/src/messages/de.json
+++ b/apps/web/src/messages/de.json
@@ -296,6 +296,8 @@
"deleteVehicle": "Fahrzeug loeschen",
"deleteVehicleBody": "Das Fahrzeug {plate} wird dauerhaft aus der Stammdatenliste entfernt. Diese Aktion kann nicht rueckgaengig gemacht werden.",
"importCsv": "CSV importieren",
+ "csvFormatHelp": "CSV-Format (Semikolon): Kennzeichen;Marke;Modell;Fahrer",
+ "csvFormatExample": "Beispiel: GP-JL 728E;Mercedes;GLC 300;Max Mustermann",
"importMode": "Importmodus",
"importMerge": "Zusammenfuehren — neue Fahrzeuge hinzufuegen, vorhandene behalten",
"importReplace": "Ersetzen — alle vorhandenen Fahrzeuge loeschen und neu importieren",
@@ -337,7 +339,12 @@
"cancel": "Bearbeitung abbrechen",
"cancelDialog": "Abbrechen",
"showPassword": "Passwort anzeigen",
- "hidePassword": "Passwort verbergen"
+ "hidePassword": "Passwort verbergen",
+ "exchangeAuthHint": "401 — moegliche Ursachen:",
+ "exchangeAuthHint1": "Falsches Passwort oder Benutzername",
+ "exchangeAuthHint2": "Domain: Windows-Kurzname (z.B. FIRMA, nicht firma.de)",
+ "exchangeAuthHint3": "Benutzername ohne Domain-Praefix (z.B. 'max.muster', nicht 'FIRMA\\max.muster')",
+ "exchangeAuthHint4": "Office 365 / Exchange Online: EWS-Basisauthentifizierung seit Okt. 2022 deaktiviert — nicht unterstuetzt"
},
"errors": {
"pollFailed": "Posteingang konnte nicht geprueft werden. Ueberpruefe die Konfiguration unter 'Moduleinstellungen > Posteingang'.",
diff --git a/apps/web/src/messages/en.json b/apps/web/src/messages/en.json
index 9523932..6eebd96 100644
--- a/apps/web/src/messages/en.json
+++ b/apps/web/src/messages/en.json
@@ -296,6 +296,8 @@
"deleteVehicle": "Delete Vehicle",
"deleteVehicleBody": "Vehicle {plate} will be permanently removed from the master list. This action cannot be undone.",
"importCsv": "Import CSV",
+ "csvFormatHelp": "CSV format (semicolon): Kennzeichen;Marke;Modell;Fahrer",
+ "csvFormatExample": "Example: GP-JL 728E;Mercedes;GLC 300;Max Mustermann",
"importMode": "Import Mode",
"importMerge": "Merge — add new vehicles, keep existing",
"importReplace": "Replace — delete all existing vehicles and re-import",
@@ -337,7 +339,12 @@
"cancel": "Cancel Editing",
"cancelDialog": "Cancel",
"showPassword": "Show password",
- "hidePassword": "Hide password"
+ "hidePassword": "Hide password",
+ "exchangeAuthHint": "401 — possible causes:",
+ "exchangeAuthHint1": "Wrong password or username",
+ "exchangeAuthHint2": "Domain: Windows short name (e.g. COMPANY, not company.com)",
+ "exchangeAuthHint3": "Username without domain prefix (e.g. 'max.muster', not 'COMPANY\\max.muster')",
+ "exchangeAuthHint4": "Office 365 / Exchange Online: EWS basic auth disabled since Oct 2022 — not supported"
},
"errors": {
"pollFailed": "Could not check inbox. Review the configuration under 'Module Settings > Inbox'.",