import email.policy
import imaplib, email
M = imaplib.IMAP4(host='imap.163.com')
M.login('***@163.com', 'pass')
imap_id = ("name", "rain", "version", "1.0", "vendor", "HB")
# xatom方法为imaplib原生的提供调用自定义命令的方法
# https://docs.python.org/zh-cn/3.5/library/imaplib.html#imaplib.IMAP4.xatom
typ, data = M.xatom('ID', '("' + '" "'.join(imap_id) + '")')
M.select('INBOX')
typ, data = M.search(None, 'ALL')
for num in data[0].split():
typ, data = M.fetch(num, '(RFC822)')
# print('Message %s\n%s\n' % (num, data[0][1]))
msg = email.message_from_bytes(data[0][1], policy=email.policy.default)
res = msg.get_content()
print( msg['Subject'])
print( msg['From'])
print( msg['To'])
for part in msg.walk():
if not part.is_multipart():
name = part.get_param("name")
if not name: # 如果邮件内容不是附件可以打印输出
content = part.get_content()
print(content)
break
M.close()
M.logout()