NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #219 most downloaded on NuGet
MailKit is an Open Source cross-platform .NET mail-client library that is based on MimeKit and optimized for mobile devices. Features include: * HTTP, Socks4, Socks4a and Socks5 proxy support. * SASL Authentication via ANONYMOUS, CRAM-MD5, DIGEST-MD5, LOGIN, NTLM, OAUTHBEARER, PLAIN, SCRAM-SHA-1, SCRAM-SHA-256, SCRAM-SHA-512 and XOAUTH2. * A fully-cancellable SmtpClient with support for STARTTLS, 8BITMIME, BINARYMIME, ENHANCEDSTATUSCODES, SIZE, DSN, PIPELINING and SMTPUTF8. * A fully-cancellable Pop3Client with support for STLS, UIDL, APOP, PIPELINING, UTF8, and LANG. * A fully-cancellable ImapClient with support for ACL, QUOTA, LITERAL+, IDLE, NAMESPACE, ID, CHILDREN, LOGINDISABLED, STARTTLS, MULTIAPPEND, UNSELECT, UIDPLUS, CONDSTORE, ESEARCH, SASL-IR, COMPRESS, WITHIN, ENABLE, QRESYNC, SORT, THREAD, ANNOTATE, LIST-EXTENDED, ESORT, METADATA / METADATA-SERVER, NOTIFY, FILTERS, LIST-STATUS, SORT=DISPLAY, SPECIAL-USE / CREATE-SPECIAL-USE, SEARCH=FUZZY, MOVE, UTF8=ACCEPT / UTF8=ONLY, LITERAL-, APPENDLIMIT, STATUS=SIZE, OBJECTID, REPLACE, SAVEDATE, XLIST, and X-GM-EXT1. * Client-side sorting and threading of messages (the Ordinal Subject and the Jamie Zawinski threading algorithms are supported). * Asynchronous versions of all methods that hit the network. * S/MIME, OpenPGP, DKIM and ARC support via MimeKit. * Microsoft TNEF support via MimeKit.
Last release 8 days ago
27 Sep 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 56 of the last 60 stable releases
106 versions withdrawn
withdrawn after publishing
127 years old
192 releases · first in 1900
Fixed a bug in SmtpDataFilter. (issue #788)
Fixed ImapFolder.CopyTo() and ImapFolder.MoveTo() for IMAP servers that do not support UIDPLUS. (issue #787)
One column per quarter.
A number of fixes to bugs exposed in new unit tests for NTLM authentication.
API Changes Since 2.0.x:
Added a work-around for Exchange IMAP servers that send broken multipart BODYSTRUCTURE responses without a body-fld-dsp token.
body-fld-dsp token.MAIL FROM and RCPT TO commands. (issue #764)DATA command.SslProtocols property to IMailService (was already in MailService).* PREAUTH greeting when connecting to an IMAP server.Fixed ImapFolder.GetSubfolders (StatusItems) to make sure that the child folders exist before calling STATUS on them when the server does not support
When throwing AuthenticationException within SmtpClient, add an SmtpCommandException as the InnerException property to help consumers diagnose authent
Fixed SmtpClient to use the IPv4 literal if the socket is IPv4 address mapped to IPv6. (issue #704)
Ignore unknown tokens in IMAP untagged FETCH responses such as XAOL.SPAM.REASON.
Added work-around for ProtonMail's IMAP server. (issue #674)
Obsoleted all SaslMechanism constructors that took a Uri argument and replaced them with variants that no longer require the Uri and instead take a Ne
var oauth2 = new SaslMechanismOAuth2 (username, auth_token);
client.Authenticate (oauth2);
Updated MailKit to fully support async IO instead of using Task.Run() wrappers.
Note: As of 2.0, XOAUTH2 is no longer in the list of SASL mechanisms that is tried when using the Authenticate() methods that have existed pre-MailKit 2.0. Instead, you must now use Authenticate(SaslMechanism, CancellationToken).
An example usage might look like this:
// Note: The Uri isn't used except with ICredentials.GetCredential (Uri) so unless
// you implemented your own ICredentials class, the Uri is a dummy argument.
var uri = new Uri ("imap://imap.gmail.com");
var oauth2 = new SaslMechanismOAuth2 (uri, username, auth_token);
client.Authenticate (oauth2);
Enable TLSv1.1 and 1.2 for .NETStandard.
Fixed UniqueIdRange.ToString() to always output a string in the form ${start}:${end} even if start == end. (issue #572)
Gracefully handle IMAP COPYUID resp-codes without src or dest uid-set tokens. (issue #555)
Improved logic for cached FolderAttributes on ImapFolder objects.
* [COPYUID ...] response
without an OK (technically, the COPYUID resp-code should only appear in the tagged
response, but accept it anyway).Added a leaveOpen param to the ProtocolLogger .ctor. (issue #506)
Properly handle a NIL body-fld-params token for body-part-mpart. (issue #503)
Improved IMAP ENVELOPE parser to prevent exceptions when parsing invalid mailbox addresses. (issue #494)
Nothing published for this version
Nothing published for this version
Improved IMAP's BODYSTRUCTURE parser to sanitize the Content-Disposition values. (issue #486)
Allow an empty string text argument for SearchQuery.ContainsHeader(). (issue #451)
Added an IsAuthenticated property to IMailService.
Modified the ImapClient to always LIST the INBOX even if it is a namespace in order to get any flags set on it.
Added SearchQuery.Uids() to allow more powerful search expressions involving sets of uids.
Fixed the NuGet packages to reference MimeKit 1.8.0.
Added a new Search()/SearchAsync() to ImapFolder that take a raw query string.
Added support for the new IMAP LITERAL- extension.
Properly initialize the private Uri fields in Connect() for Windows Universal 8.1. (issue #381, #382)
Updated the NTLM SASL mechanism to include a Windows OS version in the response if the server requests it (apparently this should only happen if the s
Added support for .NET Core 1.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed logic for constructing the HELO command on WP8. (issue #351)
Properly apply SecurityCriticalAttribute to GetObjectData() on custom Exceptions. (issue #340)
Updated IMAP BODY parser to handle a NIL media type by treating it as "application".
Replaced SmtpClient's virtual ProcessRcptToResponse() method with OnRecipientAccepted() and OnRecipientNotAccepted(). (issue #309)
Added a work-around for GoDaddy's ASP.NET web host which does not support the iso-8859-1 System.Text.Encoding (used as a fallback encoding within Mail
Added support for the SMTP VRFY and EXPN commands.
If the IMAP server sends a * ID NIL response, return null for ImapClient.Identify().
* ID NIL response, return null for ImapClient.Identify().Exposed MailKit.Search.OrderByType and MailKit.Search.SortOrder to the public API.
Added support for the SCRAM-SHA-256 SASL mechanism.
Nothing published for this version
Nothing published for this version
Be more forgiving during SASL auth when a POP3 server sends unexpected text after a + response. (issue #268)
Fixed ImapFolder.Search() to not capitalize the date strings in date queries. (issue #252)
Fixed SmtpClient to not double dispose the socket.
Allow developers to specify a local IPEndPoint to use for connecting to remote servers. (issue #247)
Fixed SmtpStream logic for determining if a call to ReadAhead() is needed. (issue #232)
Added an SslProtocols property to ImapClient, Pop3Client, and SmtpClient to allow developers to override which SSL protocols are to be allowed for SSL
Fixed ImapFolder.Append() methods to make sure to encode the message with line endings.
<CR><LF>
line endings.Fixed ImapFolder to dispose the temporary streams used in GetMessage and GetBodyPart.
Fixed ImapFolder.Rename() to properly emit the Renamed event for child folders as well.
Your coding agent can read these notes before it upgrades. Set up the MCP server →