如何修复python脚本(emaillistener)

2024-04-20 11:49:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python脚本要在gmail上做侦听器,以获取传入的电子邮件,但当我运行它时,我得到了以下错误,欢迎任何帮助。 此外,如果anu的其他脚本将是welcom 已经谢谢了。 第一个脚本:

import email_listener

# Set your email, password, what folder you want to listen to, and where to save attachments
email = "example@gmail.com"
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

第二个脚本: 从这个link得到的

错误:

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

Tags: toinpyselfemailliblocalline
1条回答
网友
1楼 · 发布于 2024-04-20 11:49:28

email_listenerPython 3.8有效,但对Python 3.9无效

我发现email_listener使用的模块IMAPClient与标准模块imaplib中的新IMAP_SSL.open()有问题

在第IMAPClient页,您可以看到

Python versions 2.7 and 3.4 through 3.7 are officially supported.

因此,您必须使用Python 3.8并等待IMAPClient修复它

相关问题 更多 >