Skip to content

Instantly share code, notes, and snippets.

@jstedfast
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jstedfast/418c41008bd2458c7d17 to your computer and use it in GitHub Desktop.
Save jstedfast/418c41008bd2458c7d17 to your computer and use it in GitHub Desktop.
It's been about a year in the making for MimeKit and nearly 8 months for MailKit,
but they've finally both 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 on any platform that can run .NET (including mobile platforms) 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 in order to lend
MimeKit a helping hand in getting adopted. 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 directly from the socket, without needing to read the
message data line-by-line looking for a ".\r\n" sequence, concatenating the lines
into a massive memory buffer before I could start to parse the message. 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