直男,直接上代码。

自己看打印的内容

主要功能如下:

#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
 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得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件的更多相关文章

  1. python学习(解析python官网会议安排)

    在学习python的过程中,做练习,解析https://www.python.org/events/python-events/ HTML文件,输出Python官网发布的会议时间.名称和地点. 对ht ...

  2. python中html解析-Beautiful Soup

    1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  3. python爬虫数据解析之BeautifulSoup

    BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...

  4. Python迭代和解析(1):列表解析

    解析.迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html Python中的解析 Python支持各种解析(comprehensio ...

  5. python命令行解析模块--argparse

    python命令行解析模块--argparse 目录 简介 详解ArgumentParser方法 详解add_argument方法 参考文档: https://www.jianshu.com/p/aa ...

  6. python 关键字yield解析

    python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...

  7. Python之XML解析详解

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...

  8. 从零单排之玩转Python安全编程(II)

    转自:http://www.secpulse.com/archives/35893.html 都说Python大法好,作为一名合格的安全从业人员,不会几门脚本语言都不好意思说自己是从事安全行业的. 而 ...

  9. python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)

    简介 前边几篇,已经教小伙伴们掌握了如何生成HTML的测试报告,那么生成测试报告,我们也不能放在那里不管了,这样即使你报告在漂亮,领导也看不到.因此如果想向领导汇报工作,不仅需要提供更直观的测试报告. ...

随机推荐

  1. 终于明白if __name__ == '__main__':了

    其实很简单 if __name__ == '__main__': 就是一个判断 __name__是系统变量 __name__有一个特性,在当前文件运行是__main__,调用文件就是调用文件的路径了 ...

  2. ViewDragHelper的点击事件处理

    在上一篇ViewDragHelper的介绍后,已经完成了自定义控件SwipeLayout的滑动,这一篇,我们来处理它的点击事件.之前提到过,它有两个子view,最开始显示的是surfaceLayout ...

  3. Python操作MySQL之查看、增删改、自增ID

    在python中用pymysql模块来对mysql进行操作,该模块本质就是一个套接字客户端软件,使用前需要事先安装,在cmd中输入: pip3 install pymysql 1.查看 import ...

  4. 关于go的init函数

    亲测,如果加载一个包,如果一个包里的每个文件,均含有init函数,那么均会执行. 目前来看,init的执行顺序,是文件名称的自然排序进行执行的. 并且只是所加载包里的go文件的init函数执行,对于包 ...

  5. ajax 报0错误

    本以为在本地测试不会跨越,结果检查下来就是跨域的问题!!!! 来源:https://www.cnblogs.com/xiezn/p/5651093.html PHP Ajax 跨域问题最佳解决方案   ...

  6. memcache---mongodb---redis比较

    Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右). ...

  7. java中使用Semaphore构建阻塞对象池

    java中使用Semaphore构建阻塞对象池 Semaphore是java 5中引入的概念,叫做计数信号量.主要用来控制同时访问某个特定资源的访问数量或者执行某个操作的数量. Semaphore中定 ...

  8. 基于jenkins自动打包并部署docker环境

    一.实验环境 git                      192.168.200.71 jenkins    192.168.200.72 docker               192.16 ...

  9. hdu_2124 Flying to the Mars & hdu_1800 Repair the Wall 贪心水题

    hdu_1800 简单排一下序,从大开始把比他小的都访问一遍,ans++: #include <iostream> #include <stdio.h> #include &l ...

  10. SQL之常用函数

    表8-2 中的SOUNDEX 需要做进一步的解释.SOUNDEX 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法.SOUNDEX 考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不 ...