6

問題が発生している環境: Windows10 の Python 2.7.11 (最新のパッチを適用)。Python は msi 経由でインストールされます。設定で PATH 設定を確認したところ、c:\Python27 に設定されています。

これは Mac で動作します:

from imapclient import IMAPClient

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

しかし、Windows では、barfs が次のようになっている場合:

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: []

これは、Windows の証明書チェーンの処理と関係がありますか?

ちなみに、Outlook ドメインの代わりに imap.gmail.com に対しても同じことが行われます。

4

2 に答える 2

7

これは最終的な答えではありませんが、私が見つけた回避策は、imapclient をアンインストールして古いバージョンをインストールすることです。バージョン 0.13 (および 0.11) はうまくいきましたが、1.0.1 にアップグレードした後、あなたが投稿したのと同じエラー メッセージが表示されました。

pip で imapclient をアンインストールするには、次を実行します。

pip uninstall imapclient

古い 0.13 バージョンを pip でインストールするには、次を実行します。

pip install imapclient==0.13

imapclient のバージョンを確認するには、インタラクティブ シェルから次を実行します。

>>> import imapclient >>> imapclient.__version__

于 2016-01-21T21:34:04.450 に答える