使用代理身份验证通过imaplib访问gmail

时间:2016-01-13 12:10:16

标签: 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

1 个答案:

答案 0 :(得分:1)

我知道已经晚了但我只想发一个不知道的答案。

用这些行替换函数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')