实用小脚本,教你Python自动化备份邮箱( 三 )

备份指定用户邮件至本地现在来看进阶一点的需求 , 备份指定用户的邮件 , 比如


【实用小脚本,教你Python自动化备份邮箱】备份收件箱中所有小明(xiaoming@qq.com)发来的邮件至 Excel , 然后删除这些邮件

其实如果顺利理解了案例一 , 那么这个案例就特别简单了 从上面的案例中我们知道 , 通过下面的代码就可以获取发件人邮箱:
with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:     all_inbox_messages = imbox.messages()     for uid, message in all_inbox_messages:        email = message.sent_from[0]['email'] # 发件人邮箱那么只需要在这个基础上判断 if email == 'xiaoming@qq.com' 就可以往后执行相应代码了 。另外 , 删除邮件是基于邮箱编号 uid 的 , 代码为 imbox.delete(uid)  , 具体代码举例:
for uid, message in all_inbox_messages:     if 满足某种条件的邮件:         imbox.delete(uid)那么 , 我们综合上述两个知识点以及案例一的知识延伸 , 就很好写出案例二的代码了:
import keyringfrom imbox import Imboximport datetimefrom openpyxl import Workbookworkbook = Workbook() sheet = workbook.activeheading = ['邮件名', '发件人姓名', '发件人邮箱', '发送日期', '发送时间', '邮件正文', '附件']sheet.append(heading)password = keyring.get_password('88mail', 'test@88.com')with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox:     all_inbox_messages = imbox.messages()     for uid, message in all_inbox_messages:        email = message.sent_from[0]['email']         if email == 'xiaoming@qq.com': # 在此处判断发件人            name = message.sent_from[0]['name']            title = message.subject            GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)'            email_datetime = str(datetime.datetime.strptime(message.date, GMT_FORMAT))            email_date = email_datetime.strip()[0]            email_time = email_datetime.strip()[1]            text = message.body['plain']            attachment_lst = []            attachments = ''            if message.attachments:                for attachment in message.attachments:                    attachment_lst.append(attachment['filename'])                attachments = ', '.join(attachment_lst)            sheet.append([title, name, email, email_date, email_time, text, attachments])            imbox.delete(uid) # 在此处删除符合要求的邮件             workbook.save('xxxxx.xlsx')备份指定内容邮件上一个需求是备份指定用户的邮件 , 现在也可以备份包含指定内容的邮件 , 例如

备份收件箱中标题含有 “奖金” 的邮件至 Excel , 然后红旗标记这些邮件


推荐阅读