【问题标题】:python smtp proxy lesspython smtp 代理少
【发布时间】:2021-02-25 22:27:33
【问题描述】:

问题出在哪里?我想用代理列表检查服务器,但代码错误:

__init__() got an unexpected keyword argument 'proxies'

如果我排除代理关键字参数,它工作正常。

import  os, sys, smtplib
with open('proxy.txt') as urls:
    for line in urls:
        proxies=line.rstrip()
        file = open('sever.txt', 'r') # contains <server>:<user>:<pass>:<port>

        for line in file.readlines():
            list1 = line.split(':')

            try:
                server=smtplib.SMTP(list1[0]+':'+list1[3], proxies={"https":proxies})
                server.starttls()
                server.login(list1[1],list1[2])
                server.quit()
                with open ("valid.txt", "a") as f:
                    f.write(str (list1[0]+":"+list1[1]))

            except Exception as e:
                print e

【问题讨论】:

  • 在 sever.txt server:user:pass:port 内
  • 它会抛出异常吗?如果是这样,有什么例外(请将这些详细信息添加到帖子本身)
  • 我对此有点困惑,这是标准的smtlib 库吗?如果是这样,在他们的官方文档中我没有看到proxies 参数:docs.python.org/3/library/smtplib.html
  • @Karan 你可以看到
  • 回应了。请看我的回答

标签: python python-2.7


【解决方案1】:

感谢您提供错误消息,现在很清楚发生了什么 - proxies 不是 smtplib 的有效参数。因此,您会收到 __init__() 错误,这意味着它无法使用给定的参数初始化对象。

如果您希望通过代理发送电子邮件,我建议您阅读Python smtplib proxy support

使用socks或任何其他python套接字配置包,您可以在实例化SMTP客户端之前设置代理设置。

来自Python send email behind a proxy server

#socks.setdefaultproxy(TYPE, ADDR, PORT)
socks.setdefaultproxy(socks.SOCKS5, 'proxy.proxy.com', 8080)
socks.wrapmodule(smtplib)

【讨论】:

  • 如何使用代理列表?并使用随机选择代理?
  • 一个简单、天真的方法是:在您的 for 循环中,在每次迭代中,您可以运行我上面的两个 socks 方法并继续重新包装您的 smtlib 模块每次迭代都有一个新代理。
【解决方案2】:

现在我有问题 我的代理列表 2 行 服务器列表 10 行 在 2 个请求代码停止后:(

import  os, sys, smtplib
import socks
with open('proxy.txt') as urls:
    for line in urls:
        proxies=line.rstrip()
        try:
            socks.setdefaultproxy(socks.HTTP, proxies, 8080)
            socks.wrapmodule(smtplib)
            file = open('server.txt', 'r')
            for line in file.readlines():
                list1 = line.split(':')

            
            server=smtplib.SMTP(list1[0]+':'+list1[3])
            server.starttls()
            server.login(list1[1],list1[2])
            server.quit()
            print "valid   "+proxies+"   "+list1[1]
            with open ("valid.txt", "a") as f:
                f.write(str (list1[0]+":"+list1[1])+'\n')

        except:
            print "bad   "+proxies+"   "+list1[1]

【讨论】:

  • 停止是什么意思?是否抛出异常? (不要吞下你的例外。你至少应该这样做:except Exception as e: print(e)
猜你喜欢
  • 2016-02-06
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 2021-07-12
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多