Skip to content

Instantly share code, notes, and snippets.

@chkn
Forked from jstedfast/gist:418c41008bd2458c7d17
Last active August 29, 2015 14:07
Show Gist options
  • Save chkn/9faa94422d1e90d3d1b0 to your computer and use it in GitHub Desktop.
Save chkn/9faa94422d1e90d3d1b0 to your computer and use it in GitHub Desktop.
After about a year in the making for MimeKit and nearly 8 months for MailKit,
they've finally reached 1.0 status.
I started really working on MimeKit about a year ago wanting to give the .NET
community a top-notch MIME parser that could handle anything the real world could
throw at it. I wanted it to run on any platform that can run .NET (including mobile),
and do it with remarkable speed and grace. I wanted to make it such that re-serializing
the message would be a byte-for-byte copy of the original, so that no data would
ever be lost. This was also very important for my last goal, which was to support
S/MIME and PGP.
All of these goals for MimeKit have been reached (partly thanks to the BouncyCastle
project for the crypto support).
At the start of December last year, I began working on MailKit to aid in the
adoption of MimeKit. It became clear that without a way to inter-operate with the
various types of mail servers, .NET developers would be unlikely to adopt it.
I started off implementing an SmtpClient with support for SASL authentication,
STARTTLS, and PIPELINING support.
Soon after, I began working on a Pop3Client that was designed such that I could use
MimeKit to parse messages on the fly, directly from the socket, without needing to
read the message into a massive memory buffer first. This fact,
combined with the fact that MimeKit's message parser is orders of magnitude faster
than any other .NET parser I could find, makes MailKit the fastest POP3 library the
world has ever seen.
After a month or so of avoiding the inevitable, I finally began working on an
ImapClient which took me roughly two weeks to produce the initial prototype
(compared to a single weekend for each of the other protocols). After many months of
implementing dozens of the more widely used IMAP4 extensions (including the GMail
extensions) and tweaking the APIs (along with bug fixing) thanks to feedback from
some of the early adopters, I believe that it is finally complete enough to call 1.0.
In July, at the request of someone involved with a number of the IETF email-related
specifications, I also implemented support for the new Internationalized Email
standards, making MimeKit and MailKit the first - and only - .NET email libraries to
support these standards.
If you want to do anything at all related to email in .NET, take a look at MimeKit and
MailKit. I guarantee that you will not be disappointed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment