【发布时间】:2020-06-07 06:08:16
【问题描述】:
import imaplib
import email
import socket
socket.getaddrinfo('127.0.0.1', 8080)
def read_email_from_gmail():
try:
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
mail.login('your email', 'your password')
mail.select('inbox')
type, data = mail.search(None, 'ALL')
mail_ids = data[0]
id_list = mail_ids.split()
typ, data = mail.fetch(bytes(str(id_list), 'utf-8'), '(RFC822)')
for responsepart in data:
if isinstance(responsepart, tuple):
msg = email.message_from_string(responsepart[1].decode('utf-8'))
email_subject = msg['subject']
email_from = msg['from']
print('From : ' + email_from + '\n')
print('Subject : ' + email_subject + '\n')
except Exception as e:
print(str(e))
read_email_from_gmail()
输出:FETCH 命令错误:BAD [b'Could not parse command']
我想使用 Python 接收来自 Gmail 的邮件。有人可以帮我在哪里出错吗?这是什么错误?
提前谢谢你!
【问题讨论】:
-
请不要在发布后更改您的问题。另外,请尝试不使用 imaplib 调试和跟踪工具。此外,通过在 id_list 上使用 for 循环,从一次获取 一个 消息开始,而不是尝试一次获取所有消息。 fetch() 不接受 python 列表,只是将其强制为“字节”并不能使其为服务器所接受。
标签: python imap getaddrinfo