首页 > 解决方案 > python2.7 imaplib 挂起。让我开心

问题描述

我正在使用 python2.7 imaplib。当使用 fetch 命令获取电子邮件时,我的程序进入等待状态。仅在特定服务器上发生。

我在代码中找到了等待部分

我猜这个问题就像 tcp 套接字通信中的 crlf 或 EOL

我的开发环境 Python 版本:2.7 Imaplib 版本:2.58 操作系统:ubuntu 14.04 lts

感谢

我的 imap 命令

typ, eml = self.M.fetch(num, "(RFC822)")

日志(imaplib 调试 = 4)

/*my request*/
38:46.59 > CCOL12 UID FETCH 2 (RFC822) 

/*server response*/
38:46.60 < * 1 FETCH (UID 2 RFC822 {1627}
38:46.60 read literal size 1627



代码中的等待部分(imaplib.py)

self.file.read(大小)

self.file.readline(_MAXLINE + 1)

    def open(self, host = '', port = IMAP4_PORT):
        """Setup connection to remote server on "host:port"
            (default: localhost:standard IMAP4 port).
        This connection will be used by the routines:
            read, readline, send, shutdown.
        """
        self.host = host
        self.port = port
        self.sock = socket.create_connection((host, port))
        self.file = self.sock.makefile('rb')

    def read(self, size):
        """Read 'size' bytes from remote."""
        return self.file.read(size)

    def readline(self):
        """Read line from remote."""
        line = self.file.readline(_MAXLINE + 1)
        if len(line) > _MAXLINE:
            raise self.error("got more than %d bytes" % _MAXLINE)
        return line

代码中的等待部分(socket.py)

self._sock.recv(左)

def read(self, size=-1):
    ...
    data = self._sock.recv(left)



tcpflow 有一个值

211.235.032.125.00143-192.168.020.054.46041: * 1 FETCH (UID 2 RFC822 {1627}

PHA+67Cb7J2AIOuplOyLnOyngCDthYzsiqTtirggMjwvcD48cD48YnI+PC9wPjxpbWcgc3Jj PSJodHRwOi8vY29ycC5uaWJ0di5jby5rcjo4MC9tYWlsd3JpdGUuZHM/YWN0PXNpZ25Mb2Fk JmFtcDtkb21haW5OYW1lPW5pYnR2LmNvLmtyJmFtcDt1c2VySWR4PTQ1MiZhbXA7aW1hZ2VJ ZHg9MyI+PHA+PGJyPjwvcD4NCjxpbWcgc3JjPSdodHRwOi8vY29ycC5uaWJ0di5jby5rcjo4 MC9oaXN0b3J5U2VudC5kcz9hY3Q9Y29uZmlybSZzZW5kZXI9YzNSaGNteHZkbVU0TTBCdWFX SjBkaTVqYnk1cmNnJTNkJTNkJnJlY2VpdmVyPWRHVnpkRUJ1YVdKMGRpNWpieTVyY2clM2Ql M2Qmc3ViamVjdD02N0NiN0oyQUlPdXBsT3lMbk95bmdDRHRoWXpzaXFUdGlyZ2dNZyUzZCUz ZCZtc2dpZD1Oalk1TVRnME1qRXlPRFE0TURNeE5ESXdOZyUzZCUzZCcgd2lkdGg9JzAnIGhl aWdodD0nMCc+DQo=

------=_Part_19149_29258794.1558065910484-- ) CCOL12 OK UID FETCH completed

标签: pythonpython-2.7socketsimapimaplib

解决方案


推荐阅读