This project is read-only.

Does the world need Pop3 ?

Mar 31, 2011 at 12:33 AM
Edited Mar 31, 2011 at 12:40 AM

I was recently approached and asked about Pop3 support or more to speak, lack of it.

I have to admit I haven't used a Pop account for at least 10 years, I don't now anyone who does and I can't really see any reason why someone would, but of course I could be wrong, so I was hoping to get some Feedback on that topic. I'd appreciate any thoughts you all might have. 

Apr 1, 2011 at 9:07 PM

I'm with you on this. What's the point besides limitations for some clients?

May 25, 2011 at 4:48 PM

I am not aware of any Mail Server which currently doesn't support IMAP. Which means POP3 is not needed that much. My two pennies on the subject.

Thanks for the library, I am looking forward to using it.

By the way somebody on Channel 9 blogs suggested support for IAsyncEnumerable for nice non-blocking implementation of this library.

With new Async for .NET 4 features coming out soon it should be even better.

Let us know what you think!

May 25, 2011 at 8:46 PM
Edited May 25, 2011 at 8:46 PM

Hi _ivan,

thanks for your interest. I will try to comment on this suggestion.

As I started this library I was considering using the Rx Framework but I decided against it for two reasons.

It would add additional dependencies, correct me if I'm wrong but Rx is still not part of the .NET Framework.

The more important reason was, that there is no need to. I am vary aware that this library is synchronous for good reasons and I will try to comment on the why.

The first thing we have to realize is that communication with the server is synchronous by default, which means although we could create multiple queries and send them asynchronously to the server would still have to wait until we receive the complete response from a single query in order to reassemble it into a mail object. Since a server is pushing data synchronously through a socket it would give us no advantage whatsoever, it would infact increase complexity and delay since the response will be copped up, which is completely undesirable.

The essence of the Rx Framework is pushing data through an IEnumerable, unfortunately IMAP is no push protocol. After a connection is no longer used it gets disosed. The only usage for a push service is the IDLE command which "listens" for new messages, but unfortunately this is quite a hassle to implement asynchronously using the same connection and Rx won't help there.

I hope I could clear things up.