如何通过学院代理在Python中通过IMAP获取电子邮件?

2024-06-06 12:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看过这些solutions for connecting IMAP under proxy

要添加的信息: 我正在尝试编写一个python代码,它可以在学院的http、https和socks代理服务器下使用imapclient从gmails IMAP服务器获取邮件 在没有任何代理处理的情况下尝试时,它通常会出错

在套接字错误[101]网络无法连接

import imapclient
import pyzmail

imapObj = imapclient.IMAPClient('imap.gmail.com',ssl=True)
imapObj.login('***********@gmail.com','*********')
imapObj.select_folder('INBOX', readonly=True)

UIDs = imapObj.search(['SINCE 07-Jul-2016'])

for item in UIDs:
    rawMessages = imapObj.fetch(item, ['BODY[]', 'FLAGS'])
    message = pyzmail.PyzMessage.factory(rawMessages[item]['BODY[]'])
    message.get_subject()
    message.get_addresses('from')
    message.get_addresses('to')
    message.get_addresses('cc')
    message.get_addresses('bcc')
    message.text_part != None
    message.text_part.get_payload().decode(message.text_part.charset)
    message.html_part != None
    message.html_part.get_payload().decode(message.html_part.charset)
imapObj.logout()

但是,该过程给出的错误为

^{pr2}$

由于我的研究所代理为http、https、socks,所以我遵循了上述链接过程 我已经将系统代理设置为

http_proxy="http://10.3.100.207:8080/"
https_proxy="https://10.3.100.207:8080/"
ftp_proxy="ftp://10.3.100.207:8080/"
socks_proxy="socks://10.3.100.207:8080/"

作为代码编辑 导入imapclient 导入pyzmail 进口袜子 导入套接字

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,"10.3.100.207",8080,True)
socket.socket = socks.socksocket

imapObj = imapclient.IMAPClient('imap.gmail.com',ssl=True)
imapObj.login('***********@gmail.com','*********')
imapObj.select_folder('INBOX', readonly=True)

UIDs = imapObj.search(['SINCE 07-Jul-2016'])

for item in UIDs:
    rawMessages = imapObj.fetch(item, ['BODY[]', 'FLAGS'])
    message = pyzmail.PyzMessage.factory(rawMessages[item]['BODY[]'])
    message.get_subject()
    message.get_addresses('from')
    message.get_addresses('to')
    message.get_addresses('cc')
    message.get_addresses('bcc')
    message.text_part != None
    message.text_part.get_payload().decode(message.text_part.charset)
    message.html_part != None
    message.html_part.get_payload().decode(message.html_part.charset)
imapObj.logout()

但我似乎总是需要很长一段时间来中断键盘。根据键盘中断输出,它肯定被冻结在套接字文件的某个地方。在

请帮我解决这个问题,在网络上很难解决这些问题。我甚至尝试过隧道挖掘,但它并不能解决我的问题,也不能让问题变得更糟(我可能没有很好地实现它:P)如果需要,我会提供任何其他信息和输出


Tags: texthttpstruehttpmessagegetaddresseshtml