我正在编写一些使用 poplib 和 imaplib 通过代理服务器收集电子邮件的代码。
我使用以下设置代理连接:-
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,proxy_ip,port,True)
socket.socket = socks.socksocket
我从stackoverflow帖子中得到的:-
http://stackoverflow.com/questions/3386724/python-how-can-i-fetch-emails-via-pop-or-imap-through-a-proxy
然后我与电子邮件服务器建立连接:-
server = poplib.POP3(self.host, self.port)
server.user(self.username)
server.pass_(self.password)
我正在单元测试中测试我的代码,并且遇到了一个我认为与我与代理的连接没有正确关闭有关的问题。
一个例子是:-
我已经设置了代理连接,并正在尝试与电子邮件服务器建立连接。作为单元测试的一部分,我故意使用了错误的电子邮件服务器密码。poplib 库引发无法连接的异常。我在单元测试中捕获了异常,然后继续进行下一个单元测试,相信 poplib 库会正确关闭我之前的连接。
我的理解是这不是一件好事,我应该确保电子邮件和代理服务器连接正确关闭。
我知道如何关闭 pop3 连接:-
server.quit()
但不知道如何关闭与代理服务器的连接,或者我是否必须这样做。
如果问题出在哪里,有人可以帮助我解决这个问题或我的理解:)