Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dict KeyError“RFC822”-Gmail的IMAPClient_Python_Python 3.x_Email_Gmail Imap - Fatal编程技术网

Python dict KeyError“RFC822”-Gmail的IMAPClient

Python dict KeyError“RFC822”-Gmail的IMAPClient,python,python-3.x,email,gmail-imap,Python,Python 3.x,Email,Gmail Imap,因此,我是一名编码初学者,我选择Python作为入门。我正在尝试整理一个脚本,以获得从特定联系人收到的最后一封电子邮件的日期。该日期将保存在谷歌表单中 下面是我到目前为止只处理Gmail部分的代码。我实际上使用了来自的部分代码。然而,我得到了一个错误 回溯最近一次呼叫上次: 文件C:/Users/PycharmProjects/automation/Code.py,第33行,在 msg_string=data['RFC822'] KeyError:'RFC822' 不确定出了什么问题。我正在使用

因此,我是一名编码初学者,我选择Python作为入门。我正在尝试整理一个脚本,以获得从特定联系人收到的最后一封电子邮件的日期。该日期将保存在谷歌表单中

下面是我到目前为止只处理Gmail部分的代码。我实际上使用了来自的部分代码。然而,我得到了一个错误

回溯最近一次呼叫上次: 文件C:/Users/PycharmProjects/automation/Code.py,第33行,在 msg_string=data['RFC822'] KeyError:'RFC822'

不确定出了什么问题。我正在使用Python 3.8.1

import email
from imapclient import IMAPClient

HOST = 'imap.gmail.com'
USERNAME = 'username'
PASSWORD = 'password'
ssl = True

## Connect, login and select the INBOX
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
server.login(USERNAME, PASSWORD)
select_info = server.select_folder('INBOX')

messages = server.search(['FROM', 'email_of_the_contact@gmail.com'])

response = server.fetch(messages, ['RFC822'])

for msgid, data in response.items():
    msg_string = data['RFC822']
    msg = email.message_from_string(msg_string)
    print('ID %d: From: %s Date: %s' % (msgid, msg['From'], msg['date']))
另外,我也不确定代码是否完全符合我的目标。谢谢你的帮助

另外,添加从调试获得的消息

pydev debugger: process 344 is connecting

Connected to pydev debugger (build 193.6494.30)
Traceback (most recent call last):
  File "C:\Users\PycharmProjects\Automate\venv\lib\site-packages\httplib2\__init__.py", line 1557, in _conn_request
    conn.connect()
  File "C:\Users\PycharmProjects\Automate\venv\lib\site-packages\httplib2\__init__.py", line 1305, in connect
    address_info = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM)
  File "C:\Program Files (x86)\Python38-32\lib\socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\PycharmProjects\Automate\venv\lib\site-packages\httplib2\__init__.py", line 1982, in request
    (response, content) = self._request(
  File "C:\Users\PycharmProjects\Automate\venv\lib\site-packages\httplib2\__init__.py", line 1650, in _request
    (response, content) = self._conn_request(
  File "C:\Users\PycharmProjects\Automate\venv\lib\site-packages\httplib2\__init__.py", line 1564, in _conn_request
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
httplib2.ServerNotFoundError: Unable to find the server at oauth2.googleapis.com

Process finished with exit code -1

在这里,我运行了您的代码以重新生成相同的错误,得到了相同的结果

为了解决这个问题,我检查了dict键,发现dict键和值被编码为字节

所以,我使用字节键访问和解码,将消息转换为str,如下所示:

导入电子邮件 从imapclient导入imapclient 主机='imap.gmail.com' 用户名='USERNAME' 密码='PASSWORD' ssl=True 连接、登录并选择收件箱 server=IMAPClientHOST,使用uid=True,ssl=ssl server.loginUSERNAME,密码 选择\u info=server。选择\u文件夹“收件箱” messages=server.search['FROM','email\u_contact@gmail.com'] response=server.fetchmessages,['RFC822'] 对于msgid,response.items中的数据: msg_string=data[b'RFC822'] msg=email.message\u from\u stringmsg\u string.decode 打印'ID%d:From:%s日期:%s'%msgid,msg['From'],msg['Date']
要调试它,请打印响应并检查其中的内容,然后将信息添加到问题中。字典键采用字节编码而不是字符串,请将msg_string=data['RFC822']替换为msg_string=data[b'RFC822']。当心b@ArtiomKozyrev我在对问题的调试响应中添加了。@Vin.AI我添加了,它给我这个错误回溯最近的调用:文件C:/Users/PycharmProjects/automatic/RelDash-Code.py,第34行,在msg=email.message\u from_stringmsg_字符串文件C:\Program Files x86\Python38-32\lib\email\u init.py,第38行,在来自\u string return Parser*args的消息\u中,**kws.parsestrs文件C:\Program Files x86\Python38-32\lib\email\Parser.py,第67行,在parsestr return self.parseStringIOtext中,headersonly=headersonly TypeError:initial\u值必须是str或None,而不是bytes我已经提交了下面的答案。同样的问题