python - 通过带有代理身份验证的 imaplib 访问 gmail

标签 python sockets imaplib

我快疯了。我尝试了一种解决方案来通过代理:

class SocksIMAP4(IMAP4_SSL):
    def open(self, host, port):

            self.host = host
            self.port = port
            self.sock = socksocket()
            self.sock.set_proxy(PROXY_TYPE_SOCKS5, 'tmg-array.co.vectis.local', 8080, True, 'login',
                                'pass~')
            self.sock.connect((host, port))
            self.file = self.sock.makefile('rb')

然后

imap_server = SocksIMAP4('imap.gmail.com', 993)

但是什么也没发生。过程似乎是永恒的。

它不会抛出错误,程序就像在连接阶段被卡住一样。

有什么建议吗?

已编辑

我的导入是

import email
from imaplib import IMAP4_SSL, IMAP4_SSL_PORT, IMAP4, IMAP4_PORT
import re
import socks
import socket
from socks import socksocket, PROXY_TYPE_SOCKS4, PROXY_TYPE_SOCKS5, PROXY_TYPE_HTTP
import smtplib

最佳答案

我知道已经晚了,但我只想为不知道的人发布答案。

用这些行替换函数 open 的最后三行

self.sock = socket.create_connection((host, port), PROXY_TYPE_HTTP, "127.0.0.1", 8118)
self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
self.file = self.sslobj.makefile('rb')

关于python - 通过带有代理身份验证的 imaplib 访问 gmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766372/

相关文章:

Python 3 测试列表中的一系列项目

select - socket编程中如何使用select()函数?

linux - 为什么 wineserver 在后台运行时在子进程中设置主套接字?

sockets - 使用/proc/<pid>,如何识别网络端口号的应用程序?

python - Owner_id 不能为空。 DRF关系数据库

python - UnicodeEncodeError 仅在作为 cron 作业运行时

python - 从 imap 或 pop3 服务器读取电子邮件

python - django:从 IntegrityError 中恢复的正确方法

python - 使用with语句和imaplib时需要调用close、logout