我正在使用imaplib模块登录我的Gmail帐户并检索电子邮件。 这给了我很多信息以及to / from / subject / body文本。根据 type(msg)返回的对象是一个实例。
当我将它应用于msg对象时,我的正则表达式不会工作,因为它需要一个字符串,这显然是一个实例所以不起作用。
当我给它一个字符串时,用于标识正常工作日期的正则表达式示例:
match = re.search(r"Time:\s(([0-2]\d):([0-5]\d))", text) # validates hour and minute in a 24 hour clock
真的有三个问题:
1.)我是以正确的方式进行这种方式还是有更好的方法来做到这一点?
2.)如何将我的正则表达式应用于此“实例”信息,以便我可以识别日期/时间等
3.)我怎样才能检索电子邮件正文?
result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
msg = email.message_from_string(raw_email)
msg.get_payload()
再次感谢您
答案 0 :(得分:0)
我认为这个问题可能与我回答的另一个问题非常接近: payload of an email in string format, python
另一个人的主要问题是get_payload()可以返回你必须检查的多部分对象。它并不总是一个字符串。
以下是关于如何处理从get_payload()获取的对象的其他问题的片段:
if isinstance(payload, list):
for m in payload:
print str(m).split()
else:
print str(m).split()
此外,您可以在此处查看我对该问题的OP的实际扩展对话:http://chat.stackoverflow.com/rooms/5963/discussion-between-jdi-and-puneet
答案 1 :(得分:0)
原来可以通过有效负载[0]访问电子邮件的正文,因为有效负载是一个列表,而msg变量是一个实例。然后我将它转换为带有简单
的字符串payload = msg.get_payload()
body = payload[0]
str_body = str(body)
再次感谢您的帮助