今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件
直男,直接上代码。
自己看打印的内容
主要功能如下:
#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
import imapclient,re
import pyzmail #提取邮件里面的链接
def getDowmlodUrl():
url = None
#这里是腾讯企业邮箱,其他的自行百度
imapObj = imapclient.IMAPClient('imap.exmail.qq.com',ssl=True)
#邮箱和密码
imapObj.login('xxxx@xxx.com','xxxxxxx')
#默认收件箱
imapObj.select_folder('INBOX',readonly=True)
#搜索未读邮件,打印未读邮件的UID
UIDS = imapObj.search('UNSEEN')
print(UIDS)
#UIDS = imapObj.search('ALL')#搜索全部的邮件
if len(UIDS) >= 1:#存在未读邮件
#获得邮件内容
rawMessage = imapObj.fetch(UIDS[0],[b'BODY[]'])
#选择第一封未读邮件
messageObj = pyzmail.PyzMessage.factory(rawMessage[UIDS[0]][b'BODY[]'])
#打印邮件信息,可以根据这些信息进行筛选
print(messageObj.get_subject())#邮件主题
print(messageObj.get_addresses('from'))#发件人
print(messageObj.get_addresses('to'))#收件人
print(messageObj.get_addresses('cc'))
print(messageObj.get_addresses('bcc')) #邮件内容不为空时
if messageObj.html_part != None:
messageContent = messageObj.html_part.get_payload().decode(messageObj.html_part.charset)
#打印邮件内容
print(type(messageContent),messageContent)
#提取邮件内容里面的链接
pattern = re.compile(r'//[0-9A-Za-z./\\?\\=\\:]+')
m = re.search(pattern,messageContent)
print('m',m)
if m is not None:
print('http:' + m.group(0))
url = 'http:' + m.group(0)
#如果没有则取提起邮件的附件
else:
for part in messageObj.walk():
# name = part.get_param('name')
if part.get_filename() != None:
# print(part,part.get_filename())
with open(part.get_filename(), 'wb') as f:
f.write(part.get_payload(decode=True))
#设置邮件已读
imapObj.set_flags(rawMessage, b'\\Seen', silent=False)
else:
pass
#退出邮件
imapObj.logout()
#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
return url getDowmlodUrl()
今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件的更多相关文章
- python学习(解析python官网会议安排)
在学习python的过程中,做练习,解析https://www.python.org/events/python-events/ HTML文件,输出Python官网发布的会议时间.名称和地点. 对ht ...
- python中html解析-Beautiful Soup
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- python爬虫数据解析之BeautifulSoup
BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...
- Python迭代和解析(1):列表解析
解析.迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html Python中的解析 Python支持各种解析(comprehensio ...
- python命令行解析模块--argparse
python命令行解析模块--argparse 目录 简介 详解ArgumentParser方法 详解add_argument方法 参考文档: https://www.jianshu.com/p/aa ...
- python 关键字yield解析
python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...
- Python之XML解析详解
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...
- 从零单排之玩转Python安全编程(II)
转自:http://www.secpulse.com/archives/35893.html 都说Python大法好,作为一名合格的安全从业人员,不会几门脚本语言都不好意思说自己是从事安全行业的. 而 ...
- python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)
简介 前边几篇,已经教小伙伴们掌握了如何生成HTML的测试报告,那么生成测试报告,我们也不能放在那里不管了,这样即使你报告在漂亮,领导也看不到.因此如果想向领导汇报工作,不仅需要提供更直观的测试报告. ...
随机推荐
- 2. node xlsx的使用
1. 使用xlsx模块 const xlsx = require('xlsx'); //excel async exportexcel() { let arrayData = [ ['姓名', '电话 ...
- MySQL使用mysqldump+binlog完整恢复被删除的数据库
(一)概述 在日常的MySQL数据库运维过程中,可能会遇到用户误删除数据,常见的误删除数据操作有: 用户执行delete,因为条件不对,删除了不应该删除的数据(DML操作): 用户执行update,因 ...
- Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令 ...
- sudo: 在加载插件“sudoers_policy”时在 /etc/sudo.conf 第 0 行出错 sudo: /usr/lib/sudo/sudoers.so 必须只对其所有者可写 sudo: 致命错误,无法加载插件
解决办法: su root chmod 644 /usr/lib/sudo/sudoers.so chown -R root /usr/lib/sudo 千万不要给 /usr 赋全部权限!!! ...
- Scrapy爬虫框架(2)--内置py文件
Scrapy概念图 这里有很多py文件,分别与Scrapy的各个模块对应 superspider是一个爬虫项目 spider1.py则是一个创建好的爬虫文件,爬取资源返回url和数据 items.py ...
- 通过纯css实现图片居中的多种实现方式
html结构: <div class="demo" style="width: 800px;height: 600px; border:1px solid #ddd ...
- Pascal 字符串
Dancing with Strings http://baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/PasHTM1/pas/pasl1007.htm ...
- Facebook发布神经蛋分离法,可从嘈杂环境中提取音视频
分离混合分布是机器学习和信号处理的长期挑战,而Facebook近日提出的新方法似乎可以有效解决这一难题. 人类天生善于分离个别声音和视觉效果,例如在拥挤的鸡尾酒会上听到别人的声音,或者在动物穿过灌木丛 ...
- python练习---博客登录(装饰器)
程序要求: 1),启动程序,首页面应该显示成如下格式: 欢迎来到博客园首页 1:请登录 2:请注册 3:文章页面 4:日记页面 5:评论页面 6:收藏页面 7:注销 8:退出程序2),用户输入选项,3 ...
- PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。 https://developer.qiniu.com/pili/sdk/…
PLDroidPlayer PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 ...