Jeff Stedfast
2014-10-16 19:11:35 UTC
After about a year in the making for MimeKit[1] and nearly 8 months for
MailKit[2], 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 out of the
box.
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 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.
Again, many thanks to the Bouncy Castle developers (and in particular Peter
Dettman) for the work you guys have done and for answering my questions.
Jeff
1. https://github.com/jstedfast/MimeKit
2. https://github.com/jstedfast/MailKit
MailKit[2], 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 out of the
box.
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 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.
Again, many thanks to the Bouncy Castle developers (and in particular Peter
Dettman) for the work you guys have done and for answering my questions.
Jeff
1. https://github.com/jstedfast/MimeKit
2. https://github.com/jstedfast/MailKit