直男,直接上代码。

自己看打印的内容

主要功能如下:

#如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件
 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()

最新文章

  1. CentOS 7.2 yum方式安装MySQL 5.7
  2. 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类
  3. LINUX 下通过lsof恢复被误删除的文件
  4. 【node.js】安装express后,'express' 不是内部或外部命令的问题
  5. windows直接安装
  6. Telerik_2012_Q3 RadGrid 汉化
  7. check约束条件
  8. .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
  9. memcache 启动 储存原理 集群
  10. PMS 启动流程
  11. 如何避免 await/async 地狱
  12. JGUI源码:实现简单进度条(19)
  13. MongoDB的搭建并配置主从以及读写分离
  14. 数组之slice,splice,Concact,Reverse,Sort方法
  15. 几分钟几张图教你学会如何使用UML
  16. Xilinx 学习笔记1---新建工程和创建源代码文件
  17. SpringMVC框架09——@ResponseBody的用法详解
  18. Java Callable接口、Runable接口、Future接口
  19. Lintcode: Insert Node in a Binary Search Tree
  20. 关于phonegap-plugin-contentsync插件

热门文章

  1. vue2.x学习笔记(二十)
  2. 8. input限制手机输入
  3. 微信小程序填坑---小程序支付
  4. 支持向量机SVM知识梳理和在sklearn库中的应用
  5. 详解封装源码包成RPM包
  6. Spring Boot中使用Swagger CodeGen生成REST client
  7. dockerfile简介及书写规则
  8. Linux系统管理第四次作业 磁盘管理 文件系统
  9. hdu_1050 Moving Tables 贪心
  10. java 之 学习过程中遇到的大佬博客