The Beginnings of an IMAP Client
I’ve worked on a number of projects recently that required some kind of IMAP client library. If you are wondering what IMAP is then you should probably check out this page.
I’ve had a hunt around in the past but haven’t found anything that met the most important requirements of my projects – it had to be free, as in free lunch. In my wanderings I came across RFC3501, the IMAP standard and, much to my surprise, the IMAP protocol is actually quite simple to understand.
I have a predisposition to reinvent things to help me understand. On a side note, one day (or week) when I find myself with nothing much at all to do I’d like to have a go at an LFS build – you can probably see where this is going...
So one day, not all that long ago, an IMAP client was born!
I’ve been fiddling around in .NET for a little while now but haven’t attempted anything big using System.Net.Sockets. Once again I was pleasantly surprised after previously being to use raw API function calls the Winsock libraries – the implementation Winsock in .NET would make this project a whole lot easier.

As you can see, the structure of our IMAP client is pretty straight forward.