MimeKit v0.5 Adds .NET Framework 4.0, Android and iOS Support for Xamarin
MimeKit v0.5 has been released in NuGet Gallery with support for .NET Framework 4.0 in addition to that of Xamarin.Android and Xamarin.iOS, which you can make use of without any restrictions because of the licensing under MIT/X11 license. The MIME parser makes use of a real tokenizer instead of regular expressions and string.Split() to parse and decode headers.
MimeKit has an ability to handle rfc2047 encoded-word tokens that contain quoted-printable and base64 payloads which have been improperly broken apart. It can also handle scenarios where multibyte character sequences are split between words.
With the help of MimeKit.ParserOptions, users will be able to specify his or her own fallback charset in addition to UTF-8 and ISO-8859-1, which enables it to handle undeclared 8bit text in headers. Moreover, MimeKit provides an ability to specify any character encoding available on the system for encoding each individual header when composing MIME messages.
rfc2047 and rfc2231 encoders included with MimeKit performs proper breaking of text before the actual encoding step, thus ensuring that each encoded-word token is correctly self-contained.
"Once MimeKit goes v1.0, I plan on adding it to Xamarin's Component Store as well for even easier mobile development," said Jeffrey Stedfast, Developer, MimeKit.
MimeKit 0.5 also provides support for signing, encrypting, decrypting and verifying S/MIME message parts. You can make use of either the multipart/signed approach or the application/[x-]pkcs7-signature mime-type.
"I'd love to support PGP/MIME as well, but this is a bit more complicated as I would likely need to depend on external native libraries and programs such as GpgME and GnuPG," says Jeffrey.
MimeKit has an advanced parser implementation and does not suffer from System.Net.Mail's massive limitations or bugs. Moreover, it also provides support for parsing of Unix mbox files.
Xamarin is in a Unique Position
Personally, I am overjoyed with Xamarin's support for F#. Recently I tested the waters with an Andorid/F# app written to take advantage many of the F# language features including Pattern Matching, Async and Actors. I blogged about an early version of the app here fwaris.wordpress.com/2013/09/03/talking-to-you-... but much more has been added since then.
At least now we can do mobile development with a decent FP language.