Python Проблема с IMAPlib на сервере Bigfoot - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над сценарием переноса IMAP.

Все хорошо работает на серверах gmail и dovecot, но у меня проблема с пересылкой с сервера Bigfoot.

    def copy_local(self, email_folder, local_folder="C:/tmp/"):
        """
        Dump all emails in the folder to files in local directory.
        """
        final_folder = local_folder + correction_UTF(email_folder)

        try:
            if not os.path.isdir(final_folder):
                os.makedirs(final_folder)    

            rv, data = self.imap.search(None, "ALL")
            if rv != "OK":
                print(rv)
                print("No messages found!")
                return

            for num in data[0].split():
                #print(num)
                rv_mail, mail = self.imap.fetch(num, '(RFC822)')
                if rv_mail != 'OK':
                    print(f"ERROR getting message {num}")
                    return
                print(f"Writing message {num}")
                fichier = open('%s/%s.eml' %(final_folder, num), 'wb')
                fichier.write(mail[0][1])
                fichier.close()
        except ValueError as e:
            print (f"ERROR: Unable to copy mail on the folder error : {e}")

Если Я печатаю (num), у меня есть список в виде gmail, например:

....
b'604'
b'605'
b'606'
b'607'
b'608'
....

, поэтому все выглядит нормально и папка находится в пределах досягаемости.

но когда я пытаюсь выполнить fletch , у меня есть эта ошибка:


Traceback (most recent call last):
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1019, in _command_complete
    typ, data = self._get_tagged_response(tag)
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1139, in _get_tagged_response
    self._get_response()
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1102, in _get_response
    dat = self._get_line()
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1151, in _get_line
    raise self.abort('socket error: EOF')
imaplib.abort: socket error: EOF

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "z:/No-git/Scripts/IMAP_sync.py", line 569, in <module>
    from_serveur.fletch_folder_local(folder)
  File "z:/No-git/Scripts/IMAP_sync.py", line 392, in fletch_folder_local
    self.copy_local(folder)
  File "z:/No-git/Scripts/IMAP_sync.py", line 420, in copy_local
    rv_mail, mail = self.imap.fetch(num, '(RFC822)')
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 534, in fetch
    typ, dat = self._simple_command(name, message_set, message_parts)
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1196, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "F:\dev-tools-plugin\Anaconda3\lib\imaplib.py", line 1021, in _command_complete
    raise self.abort('command: %s => %s' % (name, val))
imaplib.abort: command: FETCH => socket error: EOF


Спасибо за вашу помощь!

...