SMTP over Socks Proxy

时间:2013-01-11 07:07:27

标签: c# proxy smtp

我对SMTP使用以下代码:

            MailMessage mail = new MailMessage();
            mail.From = new System.Net.Mail.MailAddress(Global.username);
            mail.Subject = Global.subject;

            SmtpClient smtp = new SmtpClient();
            smtp.Port = 587;
            smtp.EnableSsl = true;
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new NetworkCredential(Global.username, Global.password); 
            smtp.Host = "smtp.gmail.com";

            mail.To.Add(new MailAddress(Global.to));

            mail.IsBodyHtml = true;
            mail.Subject = Global.subject;
            mail.Body = Global.message;
            smtp.Send(mail);

完美无缺,但问题是我需要HTTP和Socks代理支持。我正在寻找可以用于商业目的的以太无库,或者我应该采取什么方法来运行代理。我还需要这个用于POP3和IMAP,我认为编写自己的包装器比找到已有的东西更容易,我只是不确定从哪里开始。我已经使用HTTP和Socks支持完成了自己的HTTP包装器,但我不确定SMTP,IMAP和POP3如何通过代理工作..对我来说最好的办法是什么?谢谢!

2 个答案:

答案 0 :(得分:3)

如何使用CNTLM?我之前使用过Python,而我还没有尝试过其他编程语言。

答案 1 :(得分:1)

Socks支持需要嵌入到SMTP类本身(或者至少是它管理套接字连接的部分),这不是这里的情况。您有两种选择:

  1. 使用MailMessage的替换,它支持内置的SOCKS
  2. 或者,您需要使用SOCKS代理/隧道应用程序或类,它将在本地系统上打开侦听套接字并接受其上的连接。然后它将充当SOCKS客户端并通过两种方式传递数据。您将设置MailMessage实例以使用此本地端口,并且数据将正确包装,以便您通过SOCKS。