fix: Erkennungstext greift auch in Betreff und Text

Bei einer von Hand weitergeleiteten Bank-Mail steht die eigene Adresse im
From; "Raiffeisen" findet sich nur noch im Betreff ("WG: Raiffeisen …")
und im zitierten Kopf. Das Feld hiess "Absender enthaelt" und prueft nur die
Absender-Koepfe – die Mail wurde also uebergangen, obwohl das Suchwort
sichtbar darin stand. Eine Falle, kein Bedienfehler.

Gesucht wird jetzt in Absender-Koepfen, Betreff und den ersten 2000 Zeichen
des Textes; die Beschriftung heisst entsprechend "Erkennungstext". Ein Test
mit einer nachgebauten Weiterleitung haelt fest, dass sowohl die Zuordnung
greift als auch Betrag und Empfaenger daraus lesbar bleiben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-22 20:27:54 +02:00
co-authored by Claude Opus 5
parent bfb6fa6b6d
commit 615be0f0f5
5 changed files with 73 additions and 9 deletions
+3 -2
View File
@@ -522,7 +522,7 @@
"deleteConfirm": "Postfach „{{name}}“ entfernen? Bereits erfasste Zahlungen bleiben.",
"noSenders": "Noch kein Absender zugeordnet – ohne Zuordnung wird nichts übernommen.",
"noAccount": "kein Konto",
"fromPlaceholder": "Absender enthält, z. B. raiffeisen.ch",
"fromPlaceholder": "Erkennungstext, z. B. raiffeisen",
"security": "Verschlüsselung",
"secSsl": "SSL/TLS (üblich, Port 993)",
"secStarttls": "STARTTLS (Port 143)",
@@ -532,6 +532,7 @@
"edit": "Postfach bearbeiten",
"skippedTitle": "Diese Mails wurden übergangen",
"skippedHint": "Für sie passt keine Absender-Zuordnung. Trag einen Teil der Adresse oder des Betreffs unten ein, dann werden sie beim nächsten Abruf übernommen.",
"fetchedNone": "Keine Mails im gewählten Ordner gefunden. Stimmt der Ordner? Beim ersten Abruf werden die letzten 14 Tage durchsucht."
"fetchedNone": "Keine Mails im gewählten Ordner gefunden. Stimmt der Ordner? Beim ersten Abruf werden die letzten 14 Tage durchsucht.",
"senderHint": "Gesucht wird in Absender, Betreff und im Anfang des Textes. Damit greift es auch bei weitergeleiteten Mails, wo im Absender deine eigene Adresse steht."
}
}
+3 -2
View File
@@ -522,7 +522,7 @@
"deleteConfirm": "Remove mailbox “{{name}}”? Payments already captured stay.",
"noSenders": "No sender mapped yet – without a mapping nothing is taken over.",
"noAccount": "no account",
"fromPlaceholder": "Sender contains, e.g. raiffeisen.ch",
"fromPlaceholder": "Match text, e.g. raiffeisen",
"security": "Encryption",
"secSsl": "SSL/TLS (usual, port 993)",
"secStarttls": "STARTTLS (port 143)",
@@ -532,6 +532,7 @@
"edit": "Edit mailbox",
"skippedTitle": "These emails were skipped",
"skippedHint": "No sender mapping matched them. Enter part of the address or the subject below and they will be picked up on the next fetch.",
"fetchedNone": "No emails found in the selected folder. Is the folder right? The first fetch looks at the last 14 days."
"fetchedNone": "No emails found in the selected folder. Is the folder right? The first fetch looks at the last 14 days.",
"senderHint": "Searched in sender, subject and the start of the body. That way it also works for forwarded emails, where the sender is your own address."
}
}
+1
View File
@@ -269,6 +269,7 @@ function SenderForm({ konten, onAdd, t }) {
<option value="">{t("mailbox.noAccount")}</option>
{konten.map((k) => <option key={k.id} value={k.id}>{k.name}</option>)}
</select>
<p className="muted small" style={{ margin: "4px 0 0" }}>{t("mailbox.senderHint")}</p>
<button type="button" className="btn sm" style={{ marginTop: 4 }} disabled={!von.trim()}
onClick={() => { onAdd({ from_contains: von.trim(), account_id: konto ? Number(konto) : null }); setVon(""); }}>
<Icon name="plus" size={14} /> {t("mailbox.addSender")}