fix: Mails vor der Einrichtung waren fuer immer ausserhalb des Suchfensters
Der Zeitstempel des letzten Abrufs wird auch dann gesetzt, wenn ein Abruf
nichts fand – und danach sucht Certain nur noch ab gestern. Wer das Postfach
einrichtet, nachdem die Mails schon da waren, findet sie nie: Der erste,
ergebnislose Abruf schiebt das Fenster an ihnen vorbei.
Jetzt gibt es "Aelteres nachholen": Es sucht die letzten 90 Tage und uebergeht
den Zeitstempel. Dass dabei nichts doppelt ankommt, sichert wie bisher die
Message-ID.
Ausserdem sagt die Meldung jetzt, AB WANN gesucht wurde. Bisher stand dort
"Stimmt der Ordner?" – die Frage war fast immer die falsche.
Und ein latenter Fehler, der im August nicht auffaellt: Das Suchdatum wurde mit
strftime("%b") gebaut, also mit dem Monatskuerzel in der Sprache des Servers.
IMAP verlangt die englischen; auf einem deutschen System haette die Suche im
Maerz, Mai, Oktober und Dezember nichts gefunden. Die Kuerzel stehen jetzt fest
im Code.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -79,10 +79,16 @@ def test_source(source_id: int, db: Session = Depends(get_db), user: User = Depe
|
||||
|
||||
|
||||
@router.post("/sources/{source_id}/fetch")
|
||||
def fetch_source(source_id: int, db: Session = Depends(get_db), user: User = Depends(get_current_user)):
|
||||
def fetch_source(source_id: int, tage: int | None = None,
|
||||
db: Session = Depends(get_db), user: User = Depends(get_current_user)):
|
||||
"""Mails abholen. Mit ``tage`` ab heute minus so vielen Tagen statt ab dem
|
||||
letzten Abruf – für Mails, die schon vor der Einrichtung im Postfach lagen."""
|
||||
quelle = get_owned(db, MailSource, source_id, user)
|
||||
if tage is not None and not 1 <= tage <= 365:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail="Der Zeitraum muss zwischen 1 und 365 Tagen liegen.")
|
||||
try:
|
||||
return mail_import.hole_neue(db, quelle)
|
||||
return mail_import.hole_neue(db, quelle, tage)
|
||||
except mail_import.MailFehler as e:
|
||||
quelle.last_error = str(e)[:500]
|
||||
db.commit()
|
||||
|
||||
Reference in New Issue
Block a user