diff --git a/internal/mail/imap.go b/internal/mail/imap.go index 52d76b0..06fb1aa 100644 --- a/internal/mail/imap.go +++ b/internal/mail/imap.go @@ -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) }