Releases: emersion/go-imap
Releases · emersion/go-imap
2.0.0-alpha.5
go-imap v2.0.0-alpha.5
The main change is around FETCH: the items to fetch are no longer passed
as a list, instead FetchOptions struct fields are used.
Simon Ser (6):
go fmt
imapclient: add IDLE example
imapclient: add docs about charset decoding
imapserver: pass extended bool to writeBodyStructure
imap: turn FetchItem into FetchOptions
imap: improve docs for various FETCH-related structs
2.0.0-alpha.4
go-imap v2.0.0-alpha.4
Simon Ser (13):
cmd/imapmemserver: fix -tls-cert/key flags
imap: switch Envelope.Date to time.Time
imap: convert SearchReturnOption into struct fields
imap: replace StatusItem with StatusOptions
imapserver: add LITERAL+
imapwire: remove misleading UTF8=ACCEPT reference
imapclient: add LITERAL+
imapclient: fix deadlock during STARTTLS
imap: allow multiple SeqSets per SearchCriteria
imap: add SearchCriteria.And
imapserver: simplify readSearchKeyWithAtom
imapclient: remove SeqNum special case when encoding SEARCH
Add support for SEARCHRES
2.0.0-alpha.3
go-imap v2.0.0-alpha.3
Simon Ser (42):
cmd/imapmemserver: new command
cmd/imapmemserver: fix -password flag
imapmemserver: add per-mailbox UIDVALIDITY
imapmemserver: bump UIDVALIDITY when a mailbox is re-created
imapmemserver: return NONEXISTENT/ALREADYEXISTS response codes
imapmemserver: return TRYCREATE for COPY and MOVE
readme: add usage and note about v1
imapserver: add Server.ListenAndServe{,TLS}
imapclient: make text after resp-text-code optional
imapwire: use unicode.MaxASCII
imapclient: use CHARSET for SEARCH when necessary
imapclient: refuse PREAUTH when using STARTTLS
imapclient: fix typo
imapserver: error greeting can only be BYE
imapserver: add support for custom SASL mechanisms
imapserver: rename variable in handleAuthenticate
imap: add placeholder for Error with no text
imap: include response code in Error message
imapclient: ignore literal8 marker for FETCH BINARY[]
imapserver: send literal8 marker for FETCH BINARY[]
imapwire: add Encoder.SeqSet
imap: add SelectOptions
imap: add CreateOptions
imapserver: add missing CreateOptions argument
imapclient: don't encode UTF-8 quoted strings with UTF8=ACCEPT
imap: add FetchOptions
imap: add StoreOptions
imapclient: add support for UNAUTHENTICATE
Add support for CREATE-SPECIAL-USE
imapserver: allow CREATE-SPECIAL-USE to be advertised by the backend
imapserver: allow CREATE-SPECIAL-USE to be advertised with IMAP4rev2
imapclient: simplify UIDNEXT/UIDVALIDITY parsing
imapclient: request capabilities if needed
internal: rename ReadFlag{,List} to ExpectFlag{,List}
imapwire: add Encoder.MailboxAttr
internal: add ExpectMailboxAttr{,List}
internal: canonicalize well-known flags and mailbox attrs
imapserver: add support for PREAUTH
imapclient: add a few more examples
imapclient: add streaming LIST example
imapclient: add pipelining example
imapserver: forbid unknown commands before authentication
mariwilliam (1):
imapclient: fix deadlock in commandEncoder.Literal
2.0.0-alpha.2
go-imap v2.0.0-alpha.2
This new alpha adds the server side of the library. It also includes some
bugfixes for the client.
Simon Ser (160):
readme: add badge for docs
imap, imapclient: improve top-level package docs
imapclient: move over handlers to separate files
imapclient: warn about command pipelining
imapclient: document goroutine safety
imapclient: add support for ESEARCH
imapwire: add Encoder.Text
imapclient: add support for QUOTA
imap: add CapSet.AuthMechanisms
imapclient: add SORT
imapclient: add THREAD
imapwire: accept lone LF
imap: add missing ThreadAlgorithm
imapserver: add basic server skeleton
imapserver: recover from panics in connection goroutine
imapserver: add basic CAPABILITY handler
imap: move over imapclient.State
imapserver: use imap.ConnState
imapserver: add basic IDLE support
imapserver: use a fresh decoder for each command
imapwire: add DecoderExpectError
imapserver: send back syntax errors to clients
imapserver: introduce Session
imapserver: send BAD when IDLE isn't stopped correctly
imapserver: add LOGIN
imapserver: add ErrAuthFailed
imapserver: add AUTHENTICATE
imapserver: check connection state in IDLE handler
imapwire: make Decoder.ExpectMailbox take a pointer
imap: move over STATUS types from imapclient
imapserver: add STATUS
imap: move over imapclient.List{Options,Data}
imapserver: introduce newClientBugError
imapserver: add LIST
imap: move over imapclient.SelectData
imapserver: add SELECT and EXAMINE
imapserver: add CLOSE and UNSELECT
internal: move over imapclient.readFlag and readFlagList
imapwire: add Decoder.ExpectLiteralReader
imap: move over imapclient.LiteralReader
imap: move over imapclient.Append{Options,Data}
internal: move over imapclient.{dateTimeLayout,readDateTime}
imapserver: add APPEND
imap: move over imapclient.FetchItem
imapserver: add basic FETCH support
imap: move over imapclient.Envelope
imapserver: add FetchResponseWriter.WriteEnvelope
imapwire: introduce ConnSide
imapserver: add FetchResponseWriter.WriteBodySection
imapserver: add FetchResponseWriter.WriteBinarySection{,Size}
imapserver: add UID FETCH
imapserver: add EXPUNGE
imapwire: use escape sequence for special chars in Decoder errors
imapserver: use default logger when Options.Logger is nil
imapclient: fix deadlock in Authenticate
imapserver: add STARTTLS
imapserver: add ListWriter
imapserver: add Server.InsecureAuth
imapserver: add COPY and MOVE
imap: move over imapclient.StoreFlags
imapserver: add STORE
imapclient, imapserver: fix decoding BODY[] without section-part
imap: move over imapclient.Search{Options,Criteria}
internal: move over imapclient.searchDateLayout
imap: move over imapclient.SearchData
imap: add FlagRecent
internal: add ExpectDate
iampserver: add SEARCH
imap: move over imapclient.BodyStructure
imapserver: add FetchResponseWriter.WriteBodyStructure
imapserver: sort Session methods by connection state
imapserver: move CAPABILITY, IDLE and LOGIN handlers to separate files
imapserver: add ENABLE
imapserver: add CREATE, DELETE and RENAME
imapserver: add SUBSCRIBE and UNSUBSCRIBE
imap: move over imapclient.NamespaceData
imapserver: add NAMESPACE
imapwire: server-sent literals are never synchronizing
imapserver: send continuation requests for all literals
imapclient: encode strings as literals if necessary
imapserver: allow clients to ENABLE IMAP4rev2
imapserver: protect conn.enabled with a mutex
imapserver: add timeouts
imapclient: rename respWriteTimeout to cmdWriteTimeout
imapserver: send CAPABILITY code in greeting
imapserver: send APPENDUID
imap: move over imapclient.CopyData
imapserver: send back OK [COPYUID] in response to COPY commands
imapserver: expose connection type
imapserver: add Conn.NetConn
imapserver: lock Conn.encMutex during STARTTLS
imapserver: keep Conn.encMutex locked until OK during AUTHENTICATE
imapserver: don't keep Conn.encMutex locked during IDLE
imapserver: add ExpungeWriter
imapserver: add MatchList
imapserver: validate flags in responses
imapserver: move server options to separate struct
imapserver: add more docs
imapclient: note that sensitive info is written to Options.DebugWriter
imapserver: add Options.DebugWriter
imapserver: send COPYUID and EXPUNGE in response to MOVE
imapserver: add Conn.Bye
imapserver: add Session.Poll
imapserver: handle implicit unselect in SELECT
imapserver: add MailboxTracker
imapserver: add Session.Idle
imapserver: add SessionTracker.Idle
imapserver: ignore EOF while idling
imapserver: return IMAP4rev1 SEARCH response if ESEARCH isn't used
imapserver: add stub for STATUS RECENT
imapclient, imapserver: fix BODY[] parsing with specifier
imap: move obsolete FlagRecent to internal
imapserver: fix FETCH keywords comparisons
imapserver: decode obsolete IMAP4rev1 FETCH data items
imapserver: expand FETCH macros
imapserver: accept nil envelope in FetchWriter.WriteEnvelope
imapserver: decode STORE without flag list
imapserver: add obsolete CHECK
imapserver: announce IMAP4rev1 capabilities
imapserver: ignore net.ErrClosed when reading command
imapserver: add Server.Close
imapwire: add Encoder.Quoted
imapwire: reject atoms in Decoder.ExpectNStringReader
imapserver: add obsolete LSUB
imapclient, imapserver: use case-insensitive comparisons
imapwire: make INBOX case-insensitive in Decoder.ExpectMailbox
fixup! imapclient, imapserver: use case-insensitive comparisons
imapwire: add Decoder.ExpectSeqSet
imapserver: properly discard half-consumed command lines on error
imapserver: send OK [READ-WRITE/READ-ONLY] on SELECT/EXAMINE
imapserver: bail on sequence number OOB in SessionTracker
imapserver: ensure envelope UTF-8 is encoded
imapserver: make LIST select options case-insensitive
imapserver: return error on unknown LIST select option
imapserver: implement multiple patterns for LIST-EXTENDED
imapserver: return ESEARCH response on empty return option list
imapserver: do not write empty ALL/MIN/MAX ESEARCH response fields
imapserver: write obsolete RECENT response after SELECT/EXAMINE
imapserver: default Sender and Reply-To to From
imap: drop BodyStructureSinglePartExt.MD5
imapserver: fix nil deref when writing text/* body structure
imapserver, imapclient: fix handling of lowercase section specifier
imapserver: fix decoding of partial body section
imapserver: fix FETCH BODY[] and BINARY[] items not returned
imapclient, imapserver: fix decoding of body section specifier
imapserver: return back obsolete FETCH items to client
imapserver: add UpdateWriter.WriteMessageFlags
imapserver: add MailboxTracker.QueueMessageFlags
imapserver: add UID to FETCH FLAGS unilateral updates
imapserver: fix expunged messages in SessionTracker.EncodeSeqNum
imapserver: allow specifying source in MailboxTracker.QueueMessageFlags
imapserver: decode modified UTF-7 in LIST patterns
imapserver: unwrap imap.Error in Conn.readCommand
imapserver/imapmemserver: new package
imapserver: make capabilities customizable
imapserver: send CAPABILITY response code after authentication
imapserver: make Session.Namespace and Move optional
imapmemserver: remove unused return value in message.store
imapserver: add FLAGS unilateral update
Add GitHub issue template
2.0.0-alpha.1
go-imap v2.0.0-alpha.1
Simon Ser (140):
Initial commit
imapwire: add IMAP encoder and decoder
imapclient: add IMAP client
imapwire: add support for encoding literals
imapclient: add support for continuation requests
imapclient: add APPEND
imapwire: add Decoder.Skip
imapwire: include last unread byte in error messages
imapclient: add SELECT
imapwire: add Encoder.{Special,Number,Number64}
imapwire: add Decoder.Number64
imapwire: add support for decoding literals
imapclient: add FETCH
imapclient: add STARTTLS
imapclient: add IDLE
imapclient: make beginCommand take the command as input
imapclient: add commandEncoder
imapclient: track continuation requests per-command
imapclient: use per-command encoder
imapwire: make literals cancellable
imapwire: add some docs
imapclient: move Client.read up
imapclient: return data from SELECT command
imapclient: add Options
imapclient: add basic support for unilateral data
imapclient: fix races in StartTLS and Idle
imapwire: don't panic on number64 overflow
imapwire: add number decoding methods
imapclient: add STATUS
imapwire: add Encoder.List
imapwire: add Decoder.ExpectList
imapclient: simplify FetchCommand.Next
imapclient: fix FETCH replies dropped by FetchCommand.Next
imapwire: add Decoder.Quoted
imapclient: add LIST
imapclient: add ListCommand.Collect
imapclient: add FetchItem
imapclient: decode FETCH FLAGS
imapclient: add FetchCommand.Collect and FetchMessageData.Collect
imapclient: add FetchMessageData.SeqNum
imapwire: accept literals in Decoder.ExpectAString
imapclient: handle nil literal in FETCH BODY[]
imapclient: add FETCH ENVELOPE
imap: add toplevel package doc comment
imapclient: add FETCH INTERNALDATE
imapclient: split FetchMessageBuffer item handling in function
imapclient: add FETCH RFC822.SIZE
imapclient: add FETCH UID
imapclient: add FETCH BODYSTRUCTURE
imapclient: add BodyStructureSinglePart.Filename
imapclient: add BodyStructure.Walk
imapclient: add BodyStructure.Disposition
imap: add SeqSet
imapclient: take SeqSet as input in Client.Fetch
imapwire: make SP optional before parenthesized list
imapclient: add FetchItemDataBodyStructure.IsExtended
imap: move over MailboxAttr
imap: add Flag
imapclient: add Options.WordDecoder
internal/utf7: new package
imapwire: encode/decode UTF-7 in mailbox names
imapclient: use imapwire.Decoder.ExpectMailbox
imapclient: turn FetchItem into an interface
imapclient: decode FETCH BINARY.SIZE[]
imapclient: handle FETCH BODY[] and BINARY[]
imapclient: collect BINARY.SIZE[] in FetchMessageBuffer
imapclient: add UIDFetch
imapclient: add DialStartTLS
imapclient: populate tls.Config.NextProtos
imapclient: split into per-command files
imapclient: add EXPUNGE
imapclient: add STORE
imapclient: add MOVE
imapclient: add COPY
imapclient: make text optional when decoding continuation request
imapwire: add ContinuationRequest
imapclient: add AUTHENTICATE
imapclient: complete commands when decoder goroutine exits
imapclient: recover from panics in decoder goroutine
imapclient: handle initial greeting
imapclient: add EXAMINE
imap: add StatusResponse and Error
imapclient: add options to Client.Append
imap: add SeqSet.Nums
imapclient: add SEARCH
imapclient: add CREATE and DELETE
imapclient: add RENAME
imapclient: add SUBSCRIBE and UNSUBSCRIBE
imapclient: add UNSELECT
imapclient: add CLOSE
imapclient: add UID EXPUNGE
imapclient: decode PERMANENTFLAGS, UIDNEXT and UIDVALIDITY
imap: add FlagWildcard
imapclient: add State
imapclient: drop LogoutCommand
imapclient: always use string for LIST pattern
imapclient: add extended LIST
imapclient: attach STATUS responses to ListData
imap: add Cap and CapSet
imapclient: add ENABLE
imapclient: add Client.Caps
imapclient: replace FetchItemDataSection with two variants
imapclient: drop FetchItemData.FetchItem
imapwire: use pointer args for Number/Number64
imapclient: decode and expose APPENDUID
imapclient: parse and expose COPYUID in reply to COPY command
imapclient: handle ENABLED response
imapclient: handle COPYUID response code for MOVE commands
imapclient: add SelectData.List
imapclient: document optional SelectData fields in RFC 2060
imapclient: validate flags before encoding them
imapclient: document requirements for IMAP4rev2
imapclient: switch unilateral data handler to a struct
imapclient: add Client.{Mailbox,NumMessages}
fixup! imapclient: switch unilateral data handler to a struct
imapclient: print stack trace on panic in decoder goroutine
imapclient: add SelectedMailbox
imapclient: propagate decoder goroutine errors
imapclient: fix deadlock when server sends unilateral FETCH
imapclient: set read timeout
imapclient: set write timeout
imapclient: add support for LITERAL-
imapclient: add flags to UnilateralDataMailbox
imapclient: add UnilateralDataHandler.Fetch
imap: STATUS=SIZE is part of IMAP4rev2
imapclient: add support for APPENDLIMIT
imapclient: fix command priority in STATUS response handler
imapclient: match mailbox when handling STATUS response
imapclient: restrict generic type in findPendingCmdByType
imapclient: improve FETCH response routing
imapclient: fix command priority in LIST response handler
imapclient: implement fallback for MOVE
imapclient: add support for NAMESPACE
imapclient: add example
ci: add .build.yml
imapwire: rename Decoder.Skip to DiscardUntilByte
imapwire: add Decoder.DiscardValue
readme: add CI badge
imapclient: add METADATA
imapclient: drop ALL from criteria in SEARCH command
1.2.1
go-imap v1.2.1
Leander Beernaert (1):
Fix FETCH command with ALL, FAST and FULL macro as fetch items
Mikhail Faraponov (2):
Update mailbox.go
Use EqualFold to compare case insensitively
Simon Ser (1):
readme: narrow CI badge to master branch
Stephen Benjamin (1):
Add link to notmuch backend
fox.cpp (1):
Add IDLE to capabilities list
1.2.0
go-imap v1.2.0
This release merges support for a few IMAP extensions in go-imap,
instead of relying on external repositories.
René 'Necoro' Neumann (1):
Ignore unilateral updates from the server in FETCH
Simon Ser (10):
github: switch to Libera Chat for questions
Merge client support for ENABLE extension
Add missing ENABLE command and response
Merge support for MOVE extension
Merge support for IDLE extension
Ignore IDLE in Server.Enable
Add missing IDLE command and response
readme: mark IDLE as built-in
readme: sort built-in ext list
github: redirect to Libera webchat for questions
Zhang Huangbin (1):
Update dependent packages: go-message@0.15.0, x/text@0.3.7.
fox.cpp (2):
Merge support for the UNSELECT extension
Merge support for APPENDLIMIT extension
1.1.0
go-imap v1.1.0
This release adds built-in support for SPECIAL-USE, CHILDREN and
IMPORTANT. Moving forward more extensions will be merged back into
go-imap.
A handful of bugfixes are also included.
Adam Chalkley (1):
Fix small typo in example's doc comment
René 'Necoro' Neumann (1):
Update dependencies
Ryan Westlund (1):
Fix #421: Correct docstring on client.Append
Simon Ser (8):
Add the IMPORTANT extension
readme: remove pointless `go get` command
readme: switch GoDoc links to godocs.io
ci: drop codecov
readme: remove codecov badge
Add issue template
github: add issue template front-matter
github: add about field to issue template
daichitakahashi (1):
utf7: reset ascii boolean after decode while destination is short.
fox.cpp (4):
Add section about "built-in" extensions to README
Merge support for SPECIAL-USE extension
Add constant with builtin extensions for tests
Merge support for CHILDREN extension
liangping (1):
Message chan not closed
1.0.6
go-imap v1.0.6
James (2):
Support NIL hierarchy delimiter
server: error when selecting should unselect
Michal Horejsek (1):
utf7: reset ascii boolean at EOF while destination is short
Patrick Hahn (1):
remove "should not be called directly" comments and replaced them with links to the GitHub wiki pages
Simon Ser (1):
readme: add NAMESPACE extension
fox.cpp (3):
Write NIL for empty ENVELOPE fields
backendutil: Improve Match function
client: Drop syscall.ECONNRESET hack from Client.readOnce
proletarius101 (1):
utf7: fix package doc comment
sqwishy (1):
imap: lower some fields + content disposition keys
y0ast (2):
return empty reader instead of nil when BODY is found but server returns nil
add support for empty groups in address lists
1.0.5
go-imap v1.0.5
Kiyan Yazdani (1):
Fix empty envelope address fields
Max Mazurov (1):
backendutil: Implement message size and lines counting
Michal Horejsek (1):
Add MailboxInfoUpdate
Simon Ser (2):
Fix BodyStructure fields documented as encoded
readme: update CI badge to only show status for commits
fox.cpp (3):
Move ErrStatusResp to the root package
Replace empty string result in ErrStatusResp.Error
server: Return proper BAD response for cancelled SASL negotiation