.net pop3 over http proxy

时间:2011-03-09 15:47:40

标签: .net sockets pop3

所以,我从codeplex(http://mailsystem.codeplex.com/)获得了mailsystem.net,以编写pop3客户端。 问题是,我想使用http代理。 发现了一些提示:

How to open socket thru proxy server in .Net C#?

这是 我的代码:

Pop3Client pop = new Pop3Client();
Socket sock = new Socket(AddressFamily.InterNetwork,
                             SocketType.Stream,
                             ProtocolType.Tcp);
sock.Connect("79.172.35.74", 82); // here is proxy
sock.Send(Encoding.UTF8.GetBytes("CONNECT pop.yandex.ru:110 HTTP/1.1<CR><LF>")); // here pop3 server
sock.Send(Encoding.UTF8.GetBytes("<CR><LF>"));
byte[] buffer = new byte[25];
sock.Receive(buffer);
pop.Client = sock;
pop.Connect(config.pop3.host, config.pop3.username, config.pop3.password);

所以,它在最后一行失败,出现套接字异常。我能做什么?或任何具有代理支持的免费pop3client库?

2 个答案:

答案 0 :(得分:1)

从您链接到的帖子引用:

  
      
  1. 连接到代理。
  2.   
  3. 问题CONNECT Host:Port HTTP/1.1<CR><LF>
  4.   
  5. 问题<CR><LF>
  6.   
  7. 等待回复。如果它包含HTTP/1.X 200,则连接成功。
  8.   
  9. 阅读更多回复,直到收到空行。
  10.   
  11. 现在,您通过代理连接到外部世界。做你想要的任何数据交换。
  12.   

你做枪弹的地方在哪里? 5?在收到空行之前,你在哪里阅读所有行?

除此之外,我不知道问题可能是什么。您可以选择使用Starksoft Proxy library来帮助您。

答案 1 :(得分:1)

这一行:

pop.Connect(config.pop3.host, config.pop3.username, config.pop3.password);

不需要,您的套接字已经连接。你应该只登录。

您可以尝试Mail.dll POP3 component。请注意,这是我创建的商业(非免费)产品。

它支持HTTP和SOCKS代理:

http://www.lesnikowski.com/blog/index.php/imap-pop3-smtp-via-http-socks-proxy/