Python smtplib+Gmail加代理遇Connection not allowed错误求助
解决使用SOCKS5代理通过smtplib发送Gmail邮件时的Connection not allowed by ruleset错误
我已经能通过Gmail应用专用密码、Python的smtplib库正常发送邮件,但给脚本添加代理支持时遇到了如下错误:
socks.GeneralProxyError: Socket error: 0x02: Connection not allowed by ruleset
相关代码片段:
socks.set_default_proxy(socks.SOCKS5, host, port, True, user, passw) socks.wrapmodule(smtplib) session = smtplib.SMTP('smtp.gmail.com', 587) session.login(sender_address, sender_pass)
解决建议
- 检查代理服务器规则:该错误表明代理服务器拒绝了连接请求,需确认代理服务商是否允许访问
smtp.gmail.com:587端口,部分代理会限制邮件类出站端口。 - 验证代理参数:确认
host、port、user、passw等代理参数的准确性,尤其是用户名密码是否与服务商提供的一致,SOCKS5认证方式是否匹配。 - 尝试关闭代理认证:若代理无需认证,将
set_default_proxy的第4个参数(True)改为False,并移除后续的user和passw参数。 - 切换端口或代理类型:尝试使用SMTP SSL端口
465替代587;若SOCKS5代理受限,可尝试HTTP代理(需注意smtplib配合HTTP代理的额外处理)。 - 测试代理连通性:先用
curl -x socks5://user:passw@host:port smtp://smtp.gmail.com:587(替换对应参数)测试代理能否访问目标地址,排除代理本身的连通问题。
内容的提问来源于stack exchange,提问作者Ned Hulton
相关产品推荐
相关产品推荐

