python使用imap-tools模块下载邮件附件的示例分析
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇文章给大家分享的是有关python使用imap-tools模块下载邮件附件的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最
千家信息网最后更新 2025年02月08日python使用imap-tools模块下载邮件附件的示例分析
本篇文章给大家分享的是有关python使用imap-tools模块下载邮件附件的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
最近在做一些email相关的办公自动化项目,发现一个第三方模块imap-tools不错, 网上没有啥相关介绍,所以记录下来.
环境: python3.8; imap-tools 0.39.0
需要pip 安装一下imap-tools模块
imap-tools模块是python的第三方扩展, 它使用标准库imaplib,并将常见的邮件处理事件封装,邮件处理起来代码短. 下面是个下载邮件附件的示例
from imap_tools import MailBoxwith MailBox("imap服务器名").login("账号", "密码") as mailbox: for msg in mailbox.fetch(limit=2,reverse=True): # 我这里为了避免读取全部的邮件,加上了limit=2的匹配参数,读取两封邮件,按照最新接收的次序排序,进行测试; for att in msg.attachments: # msg为上一行取得的全部邮件 if att.filename: # 如果附件的文件名不为空 att_data = att.payload # 获得附件的内容 f = open(att.filename,'wb') # 用二进制打开,一般邮件附件都是二进制的. f.write(att_data) f.close()
就是这么短,用起来比imaplib爽多了.
补充:使用Python的imap和email模块读取邮件
SMTP发送邮件的博文很多,但完整读取邮件的较少,本文主要是Python3读取邮件的编码,同时使用BeautifulSoup解析邮件内容。
Python版本信息,如下:
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
代码
import emailimport imaplibfrom bs4 import BeautifulSoupdef main(): try: # 填写需要读取邮件服务器的imap的host和port,不知道请联系管理员 conn = imaplib.IMAP4_SSL(host='imap.xxx.com', port='993') # 读取邮件的用户名和密码 conn.login('xxx@qq.com', 'your password') # 默认选择收件箱 INBOX conn.select() # Recent\Seen参数不起作用,暂先读取所有邮件 status, data = conn.search(None, 'ALL') if status != 'OK': raise Exception('读取邮件发生错误') emailids = data[0].split() # 倒序读取邮件 mail_counts = len(emailids) for i in range(mail_counts-1, 0, -1): # 获取邮件信息 status, edata = conn.fetch(emailids[i], '(RFC822)') # Message对象 msg = email.message_from_bytes(edata[0][1]) # 标题 subject = email.header.decode_header(msg.get('subject')) # subject包含文档编码 default_code = subject[0][1] # print('Content_Type', msg.get_content_type()) ctype = msg.get_content_type() # 是否multipart类型,分别处理 if msg.is_multipart(): pl = msg.get_payload() for m in pl: ctype = m.get_content_type() if 'html' in ctype: # 注意decode参数,如果是True将解码base64/quoted-printable等格式编码内容,否则不解码 html = str(m.get_payload(decode=True), m.get('content-type').split('=')[1]) # BeautifulSoup解析网页 soup = BeautifulSoup(html, "lxml") divs = soup.select('body') for d in divs: # 提取所有文本内容 text = d.get_text(strip=True) print(text) else: html = str(msg.get_payload(decode=True), default_code) # BeautifulSoup解析网页 soup = BeautifulSoup(html, "lxml") # 提取body标签里面的所有文本内容 divs = soup.select('body') for d in divs: text = d.get_text(strip=True) print(text) except Exception as ex: print(ex) finally: # close conn.close() conn.logout()if __name__ == "__main__": main()
以上就是python使用imap-tools模块下载邮件附件的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
邮件
模块
附件
内容
示例
参数
编码
分析
二进制
代码
信息
密码
就是
文本
更多
服务器
知识
第三方
篇文章
网页
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库原理系统电子版
网络安全法定位
网络安全管理技术的应用论文
关于网络安全的手抄报饰
对网络安全危害主要是
公司 网络安全 的请示
学网络安全年龄
我的世界网络安全
软件开发解决文案
服务器 托管 租用
什么叫软件开发工具包
腾讯云服务器在桌面设置链接教程
山东党建设计软件开发系统
苹果软件开发者费用是多少
数据库后端设计说明
服务器系统维护管理规程
网络安全履行义务罪
法国国家网络安全局英文简称
数据库应用与原理题库
数据库sql登录界面分开了
网络服务器管理案例
服务器系统如何选择
创建团购网站数据库目的
网络安全特写
定时抽奖软件开发
微擎数据库查看用户
网络安全主题画报图片
数据库死锁面试
github 支持数据库
网络安全 试卷