IMAPClient 1.0.0 is finally here! This is a monster release, bursting
with new features and fixes.
Here's the highlights:
Enhanced TLS support: The way that IMAPClient establishes TLS
connections has been completely reworked. By default, IMAPClient will
attempt certificate verification and certificate hostname checking, and
will not use known-insecure TLS settings and protocols. In addition,
TLS parameters are now highly configurable.
This change necessitates that backwards compatibility has been
broken, and also means that IMAPClient has a bunch of new
dependencies. Please see the earlier blog article about the TLS
changes as well as the release notes for more information.
STARTTLS support: When the server supports it, IMAPClient can
now establish an encrypted connection after initially starting with an
unencrypted connection using the STARTTLS command. The starttls method
takes an SSL context object for controlling the parameters of the TLS
Many thanks to Chris Arndt for his extensive initial work on this.
Robust search criteria handling: IMAPClient's methods that accept
search criteria have been changed to provide take criteria in a more
straightforward and robust way. In addition, the way the charset
argument interacts with search criteria has been improved. These
changes make it easier to pass search criteria and have them handled
Unfortunately these changes also mean that small changes may be
required to existing code that uses IMAPClient. Please see the earlier
blog article about the search changes as well as the release
notes for more information.
Socket timeout support: IMAPClient now accepts a timeout at
creation time. The timeout applies while establishing the connection
and for all operations on the socket connected to the IMAP server.
Semantic versioning: In order to better indicate version
compatibility to IMAPClient's users, the project will now strictly
adhere to the Semantic Versioning scheme.
Performance optimisation for parsing message id lists: A short
circuit is now used when parsing a list of message ids which greatly
speeds up parsing time.
Installation via wheels: In addition to .zip and .tar.gz files,
IMAPClient releases are now also available as universal wheels.
There have also been many other smaller fixes and improvements. See
the release notes and manual for more details.
IMAPClient can be installed from PyPI (pip install imapclient) or
downloaded via IMAPClient site.
This release couldn't have been possible with the amazing support of
Nylas. If you're developing software that needs to deal with email,
save yourself a whole lot of pain and check out their email
platform. If you're after a modern, extensible, cross-platform email
client check out N1.