【发布时间】:2019-06-09 06:26:00
【问题描述】:
我正在尝试搜索电子邮件正文,但遇到了一些问题:
#!/usr/local/bin/python3
from email.message import EmailMessage
import email
import imaplib
import re
import sys
import logging
import base64
import os
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
###########log in to mailbox########################
user = 'email@company.com'
pwd = 'pwd'
conn = imaplib.IMAP4_SSL("outlook.office365.com")
conn.login(user,pwd)
conn.select("test")
count = conn.select("test")
resp, items = conn.uid("search" ,None, '(OR (FROM "some@email) (FROM "some@email"))')
items = items[0].split()
for emailid in items:
resp, data = conn.uid("fetch",emailid, "(RFC822)")
if resp == 'OK':
email_body = data[0][1]#.decode('utf-8')
mail = email.message_from_bytes(email_body)
#get all emails with words "PA1" or "PA2" in subject
if mail["Subject"].find("PA1") > 0 or mail["Subject"].find("PA2") > 0:
print (mail)
我在以下行有问题:
body = mail.get_body(preferencelist=('plain', 'html'))
得到:
AttributeError: 'Message' 对象没有属性 'get_body'
【问题讨论】:
-
^M可能不是^+M,而是另一个单个字符:\r。更改您的正则表达式,然后重试。 -
如果你指的是这个:
re.sub(r'=(?:\r)?|<br\s*(?:/\s*)?>|[\r\n]+', '', m)它不起作用 -
收到答案后,您不应更新问题以创建新问题。回滚您的更改,接受其中一个答案(如果您确实需要,也可以删除问题;但要意识到反复删除您自己的问题会引发一些问题)并提出一个包含完整详细信息的新问题,并且可能是这个问题的背景链接。