Python poplib error_proto:行太长了

gre*_*een 5 python poplib python-2.7

最近,在没有更改代码/库的情况下,我error_proto: line too long从hotmail收件箱中读取电子邮件(poplib.retr)时开始出现python 错误.我使用的是Python 2.7.8版.我知道长行可能会导致此错误.但有没有办法绕过这个或我需要的某个版本.感谢您提出的任何建议/指示.

这是一个回溯错误:

"/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 232, in retr\n return self._longcmd(\'RETR %s\' % which)\n', 
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 167, in _longcmd\n return self._getlongresp()\n', 
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 152, in _getlongresp\n line, o = self._getline()\n', 
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 377, in _getline\n raise error_proto(\'line too long\')\n', 
'error_proto: line too long\n'
Run Code Online (Sandbox Code Playgroud)

小智 16

此处存在此问题的python错误报告:https://bugs.python.org/issue16041

我放置的工作如下:

import poplib
poplib._MAXLINE=20480
Run Code Online (Sandbox Code Playgroud)

我认为这是一个更好的主意,而不是直接编辑poplib.py库文件.

伍迪


SiH*_*iHa 3

你确定没更新吗poplib?看一下昨晚提交的最新diff :

# Added:
 ...
# maximal line length when calling readline(). This is to prevent
# reading arbitrary length lines. RFC 1939 limits POP3 line length to
# 512 characters, including CRLF. We have selected 2048 just to be on
# the safe side.
_MAXLINE = 2048

...
# in_getline()...

    if len(self.buffer) > _MAXLINE:
        raise error_proto('line too long')
Run Code Online (Sandbox Code Playgroud)

...它看起来与您的问题非常相似。

所以如果你回滚到以前的版本,可能就没问题了。