使用IMAP的Python Outlook电子邮件识别和阅读链接

使用IMAP的Python Outlook电子邮件识别和阅读链接,python,beautifulsoup,imap,imaplib,Python,Beautifulsoup,Imap,Imaplib,我正在尝试编写一个python3代码,该代码登录Outlook电子邮件帐户,然后使用一些特定的过滤器(发件人、主题、日期)搜索电子邮件,获取电子邮件,然后对其进行解析,然后使用IMAP和BeautifulSoup从其正文中提取特定链接 我能够做到: 1-使用IMAP登录我的电子邮件帐户和收件箱。 2-获取电子邮件,然后解析它们。 3-在不同的.txt文件上查找链接 我没能做到的是: 使用IMAP搜索特定电子邮件 我想知道是否有人可以帮助我在Outlook上显示正确的语法来搜索某些电子邮件 先谢谢

我正在尝试编写一个python3代码,该代码登录Outlook电子邮件帐户,然后使用一些特定的过滤器(发件人、主题、日期)搜索电子邮件,获取电子邮件,然后对其进行解析,然后使用IMAP和BeautifulSoup从其正文中提取特定链接

我能够做到: 1-使用IMAP登录我的电子邮件帐户和收件箱。 2-获取电子邮件,然后解析它们。 3-在不同的.txt文件上查找链接

我没能做到的是: 使用IMAP搜索特定电子邮件

我想知道是否有人可以帮助我在Outlook上显示正确的语法来搜索某些电子邮件

先谢谢你

import imaplib
import email
from email.utils import parseaddr

username = 'hae42@mail.aub.edu'
password = 'Null'
Mymail = imaplib.IMAP4_SSL('outlook.office365.com')#imap- 
mail.outlook.com or outlook.office365.com
Mymail.login(username, password)
#Mymail.list() #OUT: list of "folders"
Mymail.select("INBOX") #connect to inbox

def get_body(msg):
    if msg.is_multipart():
        return get_body(msg.get_payload(0))
    else:
        return msg.get_payload(None,True)

def search(key, value, Mymail):
    result, data = Mymail.search(None, key, '"()"'.format(value))
    return data

result, data = Mymail.fetch(latest_email_id, '(RFC822)')
raw_email = email.message_from_bytes(data[0][1])

 print(search('FROM', 'email@outlook.example'))

我能够使用和阅读Outlook和Gmail(以及其他)的电子邮件:

然后,您可以访问邮件解析器文档(上面的链接)中描述的电子邮件元素。例如:

# parse html from email
soup = BeautifulSoup(email_message.body, "html.parser")
msg_body = soup.get_text()

您是否阅读过RFC3501的搜索规范?imaplib不提供任何花哨的东西,您只需向库提供原始搜索字符串。我认为如果我提供更多解释会更好,我只是添加了一段读取Outlook电子邮件的代码。在一个GMAIL示例中,同样的搜索功能用于指定要获取的电子邮件,然后解析,并标识发件人“发件人”EXAMPLE@GMAIL.COM". 这会返回[b'1 2 3'],例如,收件箱中的前3封电子邮件都来自该发件人。我的问题是,我不知道如何对Outlook电子邮件执行此操作,它返回b'',因为在中没有我指定的发件人的电子邮件,尽管我确定有(我检查过)。
# parse html from email
soup = BeautifulSoup(email_message.body, "html.parser")
msg_body = soup.get_text()