Download the sample here: SilverlightPlayground.Pop3Sample.zip (40KB)
There are plenty of ways to handle network communications in Silverlight, but also with this great number of tools, the task is not always simple. The main problem is due to the need to always make calls to the network in an asyncronous way. If this is not a great trouble when we use a traditional HTTP channel, it may become source of headaches when you have to implement a low-level network protocol using a socket. When you have to handle this situation it is often required by protocols to exchange a great number of small messages, each with its own format, size and syntax, so the programming become a sort of push & pull game with a huge number of methods, hard to handle when you are debugging or maintaining the software.