Skip to content
go-imap v1.0.0

This is the first stable release of go-imap.

For a list of API changes since v0.9, see:
https://github.com/emersion/go-imap/issues/152

Carsten Seeger (1):
      added Clieint.Terminate()

CodeLingo Bot (1):
      Fix function comments based on best practices from Effective Go

David Crawshaw (3):
      backendutil: skip part header when using an index
      backendutil: read body section parts left-to-right
      imap: quote parameter values

Kyriakos Kyriakou (1):
      Make MIMEType and MIMESubType string comparisons case insensitive (#237)

LE Manh Cuong (2):
      add test for login state
      fix wrong login state condition

Martin Kirilov (2):
      Always close ch chan *imap.Message upon fetch
      test fetch closes output channel when state is not SelectedState

Pablo SEMINARIO (1):
      Add an example for Client.Search() usage

Robert G. Jakabosky (10):
      Fix client data race.
      Fix data race with server continuation requests
      Fix data races in Upgrade and SetDebug.
      Fix debug writer data race.
      Client - Detect 'connection reset by peer' errors.
      Use WaitGroups instead of channels in Waiter.
      Cleanup greeting handling code.
      Fix data race in `client.(*Client).Authenticate()`
      AuthReplyFunc - return `error`
      Change auth replies from `string` to `[]byte`

Simon Ser (10):
      readme: go-dkim has migrated to go-msgauth
      ci: migrate to sr.ht
      client: expose handler replies to third-parties
      client: add a note about concurrency
      go fmt
      client: prepopulate tls.Config.ServerName
      Update dependencies
      client: cancel pending literal writes after status response
      readme: drop go report card badge
      readme: remove stability badge

emersion (50):
      imap: rename NewSeqSet to ParseSeqSet
      imap: rename NewBodySectionName to ParseBodySectionName, fixes #103
      client: do not set channels to nil
      client: make State and Mailbox getters
      client: refactor basic tests
      client: refactor tests in any conn state
      client: refactoring tests when state is not authenticated
      client: refactor tests for authenticated state
      imap: add ParseString, fixes #127
      client: refactor tests for selected state
      utf7: remove globals
      go fmt
      server: fix a data race in tests
      client: change DialWithDialer{,TLS} doc wording, fixes #128
      imap: Mime -> MIME, updates #102
      imap: Md5 -> MD5
      server: Sasl -> SASL
      client: redesigned response handling
      imap: rename ToNamedResp to ParseNamedResp
      Replace various update channels with one unique channel
      Block when sending to Client.Updates
      Recommend to use a separate goroutine when receiving from Client.Updates
      Add one type per update
      Update Client.Updates docs
      server: close sending goroutine, fixes #139
      Add PartSpecifier type
      imap: add FetchItem and StoreItem
      imap: add StatusItem
      imap: remove private command constants
      imap: rename imap.StatusRespType constants
      imap: add StatusRespCode
      client: spec the ErrorLog to be safe to use from multiple goroutines
      imap: simplify Conn.Flush
      client: add Client.SetState for extensions
      utf7: explicitly set Encoding type to improve docs
      Fix atoms containing forbidden chars
      Call Handle and Upgrade with Conn, not *conn
      Change Message.GetBody to accept a BodySectionName instead of a FetchItem
      client: add Store example
      Do not print an error on unhandled response
      travis: use Go 1.9
      backend: improve Update
      client: more strongly typed server updates
      readme: remove Gitter chat
      Add go.mod
      ci: simplify build, use Go 1.10
      readme: remove rant
      readme: add go-imap-sortthread
      commands: fix Fetch BODY[0] formatted as a string
      client: add test case for failed APPEND

ferhat elmas (6):
      all: some simplification
      all: gofmt
      read: fix crlf reading
      client: fix couple of formatting issues in tests
      travis: make docker based, instead of vm
      all: fix some lint issues

fox.cpp (24):
      Accept LF as command separator instead of only CRLF
      Pass basic connection information to backend
      Handle HEADER.FIELDS in backendutil.FetchBodySection (#240)
      backendutil: Merge Match* functions (#241)
      backendutil: Update to go-message 0.10 (#245)
      Handle "STORE FLAGS seqset flag1 flag2" syntax
      Change order of defer statements in tests
      Check literal length
      Use io.CopyN instead of io.Copy
      Use less restrictve Dialer interface in DialWithDialer (#249)
      backendutil: Compare header field names in case-insensitive way
      Server-side (reader) support for non-synchronizing literals (#258)
      backendutil: Use textproto directly (#256)
      Explicit separation for quoted strings and atoms (#261)
      server: Fix quoted capabilities in post-auth response
      server: Add per-connection panic handler (#264)
      Revert "backendutil: Use textproto directly for Match"
      Client & server support for SASL-IR extension (#262)
      backendutil: Set Sender and Reply-To to From if empty
      backendutil: Decode headers in Match before comparsion
      backendutil: Still try to match if field decoding fails
      client: Use non-synchronizing literals when length is small (<4096) (#273)
      backendutil: Handle BODY[1] for non-multipart messages
      Add go.sum

true_one (2):
      Client
      Client: done buffer changed to 2