以下脚本连接上我的Gmail帐号,将收件箱中2013年1月份的新语丝邮件的附件保存在当前目录的xys文件夹中。

import imaplib
import email
import os
dir_name = 'archive'
if not os.path.exists(dir_name):
os.mkdir(dir_name)
save_path = os.path.join(os.getcwd(),dir_name)
M = imaplib.IMAP4_SSL('imap.gmail.com')
M.login('leetschau@gmail.com', 'vim72python251')
M.select() # default value is inbox
search_criteria = '(From "Shi-min Fang" UNSEEN)'
# '(From "Shi-min Fang" SINCE "01-Jan-2013" BEFORE "01-FEB-2013")'
res, search_result = M.search(None, search_criteria)
for num in search_result[0].split():
typ, data = M.fetch(num, '(RFC822)')
# print 'Message %s\n%s\n' % (num, data[0][1])
email_body = data[0][1]
mail = email.message_from_string(email_body)
sender = mail['From']
subject = mail['Subject']
print "["+mail["From"]+"]: " + mail["Subject"]
for part in mail.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
filename = subject+'.txt'
att_path = os.path.join(save_path, filename)
if not os.path.isfile(att_path) :
fp = open(att_path, 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
M.close()
M.logout()

说明:

  1. 附件保存的名字和扩展名是写死的,有兴趣的话可以研究一下怎样获得附件本身的文件名;

  2. 这个脚本的强大之处在于它不需要任何第三方库,只用python内置的imaplib,只用是支持imap的邮箱都可以用这个方法处理邮件;

  3. 这里面最有用的是邮件搜索规则(search_criteria),格式是(key1 value1 key2 value2 ...),每个value上加引号,整个表达式是一个字符串,因此也要加引号。

key除了这里的收件人、起始/终止日期,还有ALL(全部邮件),UNSEEN(未读邮件),DELETED(已删除邮件)等,key-value对之间可以随意组合;

  1. M的select方法默认值是收件箱,可以指定其他信箱,完整格式是:IMAP4.select([mailbox[, readonly]]);

参考1:http://stackoverflow.com/questions/6225763/downloading-multiple-attachments-using-imaplib

参考2:Python 2.7.3 chapter 20.10 imaplib -> 20.10.2: IMAP4 Example

使用脚本下载Gmail邮件附件的更多相关文章

  1. .NET接收邮件下载邮件附件——openpop.net

    使用OpenPop.Net接收邮件很方便,下面是接收下载邮件附件的代码 OpenPop.Net下载地址 https://sourceforge.net/projects/hpop/ public cl ...

  2. 在Delphi中使用indy SMTP发送gmail邮件[转]

    在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅     在Delphi中发送 ...

  3. sql server 脚本创建数据库邮件

    sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...

  4. .net发邮件 附件文件名乱码

    .net发邮件 附件文件名乱码,可以下载以下补丁安装. https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.asp ...

  5. Gmail邮件功能那么强大,GMail被封,在国内怎么用gmail收邮件?

    IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前ima ...

  6. Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件

    参考:        http://www.cnblogs.com/refrag/archive/2012/11/28/2793533.html         http://www.habadog. ...

  7. 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件

    批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...

  8. 用CleanMyMacX怎样进行邮件附件清理,CleanMyMacX清理邮件附件的方法

    都晓得CleanMyMacX邮件附件清理功能十分强大,用CleanMyMacX怎样进行邮件附件清理,CleanMyMacX清理邮件附件的方法带给你,邮件附件清理功能可以保证在收件箱中原始附件的安全性的 ...

  9. Linux centosVMware 告警系统主脚本、告警系统配置文件、告警系统负载脚本、告警系统502日志脚本、告警系统disk监控脚本、告警系统邮件引擎

    一.告警系统主脚本 要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件. 程序架构 ...

随机推荐

  1. kafka、rabbitmq、redis区别,各自适合什么场景?

    在应用场景方面 RabbitMQ RabbitMQ遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅,也是比较受到大家欢迎的. ...

  2. springboot 使用yml配置文件自定义属性

    springboot 中在application.yml文件里自定义属性值,配合@Value注解可以在代码中直接取到相应的值,如在application.yml中添加 mqtt: serverURI: ...

  3. Spring Boot中文文档(官方文档翻译 基于1.5.2.RELEASE)

    作者:Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, ...

  4. 【知识点】H264, H265硬件编解码基础及码流分析

    前言 音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,start code以及基本的工作原理,而大 ...

  5. F5的IPv6配置指导

    1.配置核心思想: 配置IPv6的默认路由 配置IPv6的VS IPv6的vs里面要启用"automap" 2.配置IPv6的默认路由 3.配置IPv6的VS 第一种方法: 第二种 ...

  6. asp.net 读取 connectionStrings

    connectionStrings 在vs.net 2005 beta 2开始,如果你在web.config中使用了数据库连接字符串的配置,那么应该按如下的方法去写: <connectionSt ...

  7. 一、k8s介绍(第一章、k8s高可用集群安装)

    作者:北京小远 出处:http://www.cnblogs.com/bj-xy/ 参考课程:Kubernetes全栈架构师(电脑端购买优惠) 文档禁止转载,转载需标明出处,否则保留追究法律责任的权利! ...

  8. tomcat隐藏版本信息防止人为扫描特定版本漏洞攻击服务器

    1.进入tomcat的lib目录找到catalina.jar文件 cd /dir/apache-tomcat-10.0.2/lib/ 2.解压文件 unzip catalina.jar 进入org/a ...

  9. Kettle——简介

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定 Kettle 的主作者是 Matt ,他在 2003 年就开始了这个项目,在  ...

  10. Appium和Python实现蚂蚁森林自动化收取能量

    准备环境 Window10系统 Appium1.21.0 AndroidSDK r24.1.1 Python3.7.5 支付宝apk文件 查看支付宝apk包信息 使用android sdk aapt命 ...