emersion / emersion/go-imap

v2: client status

Open
#491 0 comments 0 reactions 0 assignees View on GitHub
client
Dominant language
Go
Stars
2.3k
Forks
358
Avg merge
1d 16h
Merged PRs (30d)
1

Description

Continuation of https://github.com/emersion/go-imap/pull/490

- [ ] Consider adding separate types for `FetchItemData{Body,Binary}Section.Section`
- [x] Add support for `LITERAL+`
- [x] ~~Add IMAP4rev1 fallback for IDLE~~ (#543)
- [x] Consider restarting IDLE every 30min (#542)
- [x] Consider setting SEARCH charset for IMAP4rev1
- [ ] `ENABLE IMAP4rev2` on servers which also support IMAP4rev1
- [x] ~~Consider turning `SearchCriteria.Not` into a pointer, instead of a slice~~ (#505)
- [x] Add support for NAMESPACE
- [x] Add support for ESEARCH
- [x] Add support for SEARCHRES
- [x] Decode `literal8`
- [x] Make command methods extensible (see [RFC 4466](https://www.rfc-editor.org/rfc/rfc4466))
- [x] Canonicalize message flags and mailbox attrs
- [x] Parse date in envelope
- [x] Add tests which can run against any IMAP server
- [x] Consider turning lists of items into bool fields (e.g. `SearchOptions.Return`)
- [x] Drop `Client.StartTLS` in favor of a function which constructs an already-secured TLS connection
- [ ] Ignore responses that don't make sense given the connection state ([section 11.3](https://www.rfc-editor.org/rfc/rfc9051.html#section-11.3))
- [x] Consider re-using the same `*FetchBodySection` pointers in the returned map, or make it easier to match a `*FetchBodySection` from a command
- [ ] Drop `Command` because it's not extensible
- [ ] Some values can be either seq num or UID, how to represent these? Examples: `SearchData.Min/Max`, `SortCommand.Wait`, `ThreadData.Chain`. Should we add separate UID types for each?
- [ ] Some commands may return partial data, should we use pointers? See `StatusData`.
- [x] Add support for more extensions
- [x] METADATA
- [x] QUOTA (#492)
- [x] SORT
- [x] THREAD

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the continuation of pull request #490 and the unchecked items in this issue, especially the IMAP4rev2 ENABLE behavior and connection-state response handling. Read RFC 9051 section 11.3 first; no source files or tests are named, and completion would require narrowing the checklist to a specific, testable change.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.