Как исправить скрипт Python (прослушиватель электронной почты)

У меня есть два скрипта Python для прослушивания Gmail для получения входящих писем, но когда я запускаю его, я получаю следующую ошибку, любая помощь будет приветствоваться. также, если другой сценарий будет приветствоваться Уже спасибо. первый скрипт:

import email_listener

# Set your email, password, what folder you want to listen to, and where to save attachments
email = "[email protected]"
app_password = "password"
folder = "Inbox"
attachment_dir = "/path/to/attachments"
el = email_listener.EmailListener(email, app_password, folder, attachment_dir)

# Log into the IMAP server
el.login()

# Get the emails currently unread in the inbox
messages = el.scrape()
print(messages)

# Start listening to the inbox and timeout after an hour
timeout = 60
el.listen(timeout)

ошибка вывода:

C:\Users\PC Sony>"C:/Users/PC Sony/AppData/Local/Programs/Python/Python39/python.exe" "c:/Users/PC Sony/Desktop/elzero/elzero/import email_listener.PY"
Traceback (most recent call last):
  File "c:\Users\PC Sony\Desktop\elzero\elzero\import email_listener.PY", line 11, in <module>
    con.login()
  File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\site-packages\email_listener\__init__.py", line 83, in login
    self.server = IMAPClient('imap.gmail.com')
  File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\site-packages\imapclient\imapclient.py", line 254, in __init__
    self._imap = self._create_IMAP4()
  File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\site-packages\imapclient\imapclient.py", line 288, in _create_IMAP4
    return tls.IMAP4_TLS(self.host, self.port, self.ssl_context,
  File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\site-packages\imapclient\tls.py", line 44, in __init__
    imaplib.IMAP4.__init__(self, host, port)
  File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 202, in __init__
    self.open(host, port, timeout)
TypeError: open() takes 3 positional arguments but 4 were given

второй скрипт: получил это по этой ссылке

Ошибка:

Traceback (most recent call last):
      File "c:\Users\PC Sony\Desktop\elzero\elzero\import imaplib.py", line 68, in <module>
        result, data = server.uid('fetch', uid, '(RFC822)')  # fetch entire message
      File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 890, in uid
        typ, dat = self._simple_command(name, command, *args)
      File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 1230, in _simple_command
        return self._command_complete(name, self._command(name, *args))
      File "C:\Users\PC Sony\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 988, in _command
        data = data + b' ' + arg
    TypeError: can't concat int to bytes

Я протестировал первый скрипт, и он без проблем работает на Linux Mint 20, Python 3.8. Возможно, это проблема только в Windows или только в Python 3.9.

furas 22.12.2020 22:38

Я тестировал с помощью Python 3.9, и он выдает ошибку. Может они что-то изменили в imaplib и у email_listener проблемы. Насколько я знаю Python 3.9 это очень свежая версия, так что лучше использовать чуть постарше 3.8. Вы также можете отправить эту проблему автору email_listener, и, возможно, он исправит ее в следующей версии.

furas 22.12.2020 22:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

email_listener работает на Python 3.8, но не на Python 3.9

Я обнаружил, что email_listener использует модуль IMAPClient, у которого есть проблемы с новым IMAP_SSL.open() в стандартном модуле imaplib.

На странице IMAPClient вы можете увидеть

Официально поддерживаются версии Python 2.7 и с 3.4 по 3.7.

поэтому вам нужно использовать Python 3.8 и ждать, пока IMAPClient не исправит это.

я переключился на 3.8, все работает нормально, только одна последняя вещь, которую я получил, эта ошибка, я думаю, связана с декодированием, любая помощь или нужно создать непонятный вопрос

timomo 25.12.2020 16:42

Другие вопросы по теме