如何在袜子代理上使用Net :: SMTP



我正在这样做,在ruby 2.6:

require 'net/smtp'
Net::SMTP.start('smtp.gmail.com', 457).do |smtp|
  smtp.helo('gmail.com')
end

现在,我想做完全一样的事情,但是在socks4/5代理上。我在文档中找不到任何东西。

查看net :: SMTP的来源,似乎没有对袜子代理的内置支持。

一些想法:

  1. 您的红宝石解释器是用袜子支撑而建造的吗?如果是,那么您可以使用SocksSocket类。创建一个NET :: SMTP和覆盖tcp_socket的子类SOCKSSocket而不是TCPSocket
  2. 使用ruby-proxifier宝石(虽然看起来很旧(。
  3. 在纯红宝石中重新实现SOCKSSocket(通过socks4连接并不难,袜子5稍微复杂得多,请参阅此示例以获取参考(或找到现有的实现(尽管我找不到一个(。

最新更新