fix(mail): apply search limit and propagate body read error

- Cap search results to limit (keep most-recent UIDs)
- Propagate io.ReadAll errors from body reads in fetchByUIDSet

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-21 23:58:09 +01:00
parent 83bf3019c5
commit 47f877ad82
+7 -1
View File
@@ -83,7 +83,10 @@ func (c *Client) fetchByUIDSet(folder string, set *imap.SeqSet, full bool) ([]Me
if r == nil {
continue
}
raw, _ := io.ReadAll(r)
raw, err := io.ReadAll(r)
if err != nil {
return nil, fmt.Errorf("uid %d: read body: %w", m.Uid, err)
}
parsed, err := ParseMessage(m.Uid, raw)
if err != nil {
return nil, err
@@ -187,6 +190,9 @@ func (c *Client) Search(folder string, sc SearchCriteria, limit int) ([]Header,
if len(uids) == 0 {
return nil, nil
}
if limit > 0 && len(uids) > limit {
uids = uids[len(uids)-limit:] // keep highest (most recent) UIDs
}
return c.FetchHeaders(folder, uids)
}