Notion Blog
技术分享1 分钟阅读

outlook获取最新的邮件内容

代码示例

import imaplib
import email
import base64
import re

def get_newest_mail():
    return_msg = {}
    mail = imaplib.IMAP4_SSL('outlook.office365.com')
    mail.login('[email protected]', 'password')
    mail.select('INBOX')
    _, data = mail.search(None, 'ALL')
    for num in data[0].split()[-1:]:
        _, msg = mail.fetch(num, '(RFC822)')
        for response in msg:
            if isinstance(response, tuple):
                msg = email.message_from_bytes(response[1])
                return_msg['From'] = msg['From']
                return_msg['title'] = msg['Subject']
                # print(msg.keys())
                body = msg.get_payload()
                for i in body:
                    content_list = re.findall(r'\n(.*)',str(i))[2:-1]
                    print(base64.b64decode(''.join(content_list)).decode('utf-8'))
                    return_msg['content']=base64.b64decode(''.join(content_list)).decode('utf-8')
                    break
            break
        break
    return return_msg

get_newest_mail()

获取最新一封邮件的内容,并返回一个字典。

主要的步骤如下:

使用imaplib模块连接Outlook邮箱imap.office365.com,登录邮箱,选择收件箱文件夹INBOX
搜索收件箱内的所有邮件,结果在data中
从邮件id列表中取最后一个id,也就是最新的一封邮件
获取这一封邮件的内容,存储在msg中
从msg中取出发件人、主题信息,存储到返回的字典中
获取邮件正文,可能有多个部分,先取出所有部分存到body中
对每个部分用正则表达式提取出Base64编码的文本内容
拼接编码文本,使用base64模块解码
解码结果即为邮件正文内容,存储到返回字典中
返回包含发件人、主题、正文的字典

这样,我们就可以通过imaplib、email等模块解析出邮件详细内容,并返回给调用函数。

主要技术点是:

imaplib模块连接邮箱、获取邮件
email模块解析邮件对象
正则表达式提取正文 Base64 编码
base64模块解码

有关使用上的问题,欢迎您在底部评论区留言,一起交流~

读者评论

评论会同步写入该文在 Notion 中的页面底部(与正文同页,便于管理)。

0/1500

暂无评论,欢迎抢沙发。