A quick note: wherever you may see the ReadTimeout property (units are in seconds), it is really an idle timeout property. If while reading from a TCP/IP socket (i.e. from a POP3, SMTP, HTTP, FTP server) the client stops receiving new data for a length of time exceeding ReadTimeout, the transfer is aborted with a "timeout expired" failure. If data continues to arrive on the socket with no interruptions that exceed ReadTimeout, then the total length of the receive can exceed the ReadTimeout.