首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows上的imapclient错误

Windows上的imapclient错误
EN

Stack Overflow用户
提问于 2016-01-11 04:48:56
回答 2查看 2.8K关注 0票数 6

我遇到麻烦的环境: Windows10上的Python2.7.11(最新的补丁)。通过msi安装Python。我检查了设置中的路径设置,并将其设置为c:\Python27 27。

这在Mac上是可行的:

代码语言:javascript
复制
from imapclient import IMAPClient

IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True))

但是在Windows上,如果barfs是这样的话:

代码语言:javascript
复制
Traceback (most recent call last):
  File "test_outlook_imap.py", line 3, in <module>
    IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True))
  File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 152, in     __init__
    self._imap = self._create_IMAP4()
  File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 164, in _create_IMAP4
    self._timeout)
  File "C:\Python27\lib\site-packages\imapclient\tls.py", line 153, in __init__
    imaplib.IMAP4.__init__(self, host, port)
  File "C:\Python27\lib\imaplib.py", line 173, in __init__
    self.open(host, port)
  File "C:\Python27\lib\site-packages\imapclient\tls.py", line 159, in open
    self.sock = wrap_socket(sock, self.ssl_context, host)
  File "C:\Python27\lib\site-packages\imapclient\tls.py", line 126, in wrap_socket
    ssl_context = create_default_context()
  File "C:\Python27\lib\site-packages\imapclient\tls.py", line 109, in     create_default_context
    context.load_verify_locations(cadata=certs)
  File "C:\Python27\lib\site-packages\backports\ssl\core.py", line 654, in     load_verify_locations
    self._ctx.load_verify_locations(cafile, capath)
  File "C:\Python27\lib\site-packages\OpenSSL\SSL.py", line 528, in load_verify_locations
    _raise_current_error()
  File "C:\Python27\lib\site-packages\OpenSSL\_util.py", line 48, in     exception_from_error_queue
    raise exception_type(errors)
OpenSSL.SSL.Error: []

这与窗口处理证书链有关吗?

顺便说一句,它在Outlook域中对imap.gmail.com也这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-21 21:34:04

这不是最后的答案,但我发现的工作是卸载imapclient并安装一个旧版本。0.13 (和0.11)版本为我工作,但是在升级到1.0.1之后,我得到了与您发布的相同的错误消息。

若要用pip卸载imapclient,请运行:

pip uninstall imapclient

要用pip安装旧的0.13版本,请运行:

pip install imapclient==0.13

要验证imapclient的版本,请从交互式shell运行:

>>> import imapclient >>> imapclient.__version__

票数 7
EN

Stack Overflow用户

发布于 2016-10-24 02:21:13

这里有一个对我有用的解决方法(Python3.5,Windows 10),它不需要降级:

代码语言:javascript
复制
from backports import ssl
from imapclient import IMAPClient

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

server = IMAPClient('imap.gmail.com', ssl=True, ssl_context=context)

上面的代码来自于开发人员的解决方案这里,但是我发现我只需要定义context的一行就可以工作了。指定其他SSL/TLS协议也有效。

更新: 应固定从IMAPClient 2.x开始

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34714342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档