У меня есть два скрипта 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
Я тестировал с помощью Python 3.9
, и он выдает ошибку. Может они что-то изменили в imaplib
и у email_listener
проблемы. Насколько я знаю Python 3.9
это очень свежая версия, так что лучше использовать чуть постарше 3.8
. Вы также можете отправить эту проблему автору email_listener
, и, возможно, он исправит ее в следующей версии.
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, все работает нормально, только одна последняя вещь, которую я получил, эта ошибка, я думаю, связана с декодированием, любая помощь или нужно создать непонятный вопрос
Я протестировал первый скрипт, и он без проблем работает на Linux Mint 20, Python 3.8. Возможно, это проблема только в Windows или только в Python 3.9.