SMTP通过袜子代理

本文关键字:代理 SMTP | 更新日期: 2023-09-27 17:52:38

我使用以下代码进行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包装器,支持HTTP和Socks,但我不确定SMTP,IMAP和POP3如何通过代理工作。我完成这项工作的最佳方法是什么?谢谢!

SMTP通过袜子代理

使用 CNTLM 怎么样?我以前在Python上用过它,我还没有用其他编程语言尝试过。

袜子

支持需要嵌入到SMTP类本身(或者至少是管理套接字连接的部分(,但这里的情况并非如此。您有两个选择:

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

我建议 Aspose.Email 库。

示例代码:

SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.SecurityOptions = SecurityOptions.SSLImplicit;
string proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.Proxy = proxy;
client.Send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy", "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));