python实现下载pop3邮件保存到本地


Posted in Python onJune 19, 2018

利用python进行unix管理一书中有一个登陆下载邮箱的脚本,实练了下还不错,对于邮箱备份来说还是比较快捷的,但是其命名方式是以编号和 文件大小来命名的,不方便阅读,于是进行了改进修改为发件人邮件地址命名,可能由于跨度时间较长,邮件排版有改变,有些邮件获取发件人的时候不能正确匹配。

1、命名方式是以编号和 文件大小来命名

#!/usr/bin/env python 
#-*- coding: utf-8 -*- 
#filename:receive_pop3_email_download.py 
 
import poplib 
 
username = 'dxx_study' 
passwd = 'xXXXXXXX' 
 
mail_server = 'pop.163.com' 
 
p = poplib.POP3(mail_server) 
p.user(username) 
p.pass_(passwd) 
for msg_id in p.list()[1]: 
  print msg_id 
  outf = open('%s.eml' % msg_id, 'w') 
  outf.write('\n'.join(p.retr(msg_id)[1])) 
  outf.close() 
p.quit()

输出:

>>> ================================ RESTART ================================ 
>>>  
1 6189 
2 14284 
3 1712 
4 24912 
5 129052 
6 1399 
7 23298 
8 47902 
9 2334 
10 48887 
11 1081 
12 34930 
13 2098 
14 26316 
15 32381 
16 1822

python实现下载pop3邮件保存到本地

2、发件人邮件地址命名

#!/usr/bin/env python 
#-*- coding: utf-8 -*- 
#filename:receive_pop3_email.py 
 
import poplib, re 
 
username = 'dxx_study' 
passwd = 'xuXXXXXu' 
 
mail_server = 'pop.163.com' 
 
p = poplib.POP3(mail_server) 
 
#p.set_debuglevel(2)#设置调试信息打印级别 
#s = p.getwelcome()#打印欢迎信息 
p.user(username) 
p.pass_(passwd) 
p.stat() 
#p.list()#返回收件箱邮件数目,邮件大小,与p.list()[0]相同 
#p.retr(42)#提取对应邮件的内容 
#print p.top(42,42)#提取对应邮件,可以对内容按行数提取 
#p.uidl()#Return message digest (unique id) list 
#p.list()[1]#依次返回每个邮件大小,如['1 6189', '2 14284', '3 1712',....] 
#p.retr(2)[0]#返回第二封个邮件14284 octets大小 
 
 
 
def file_name(text):#这个匹配效率比较低,值得改进 
  pattern = u"Sender: (.*)" 
  file_name = re.search(pattern, text, re.I) 
  if file_name == None: 
    exit 
  else: 
    return file_name.group(1) 
 
 
def download_mail(): 
  for msg_id in p.list()[1]: 
    retr = p.retr(msg_id)[1] 
    for i in range(0,len(retr)): 
      name = file_name(retr[i])#利用filename进行正则匹配获取发件人 
      if name == None: 
        exit 
      else: 
        outf = open('%s.eml' % name, 'w') 
        outf.write('\n'.join(retr)) 
        outf.close() 
 
download_mail() 
p.quit()

python实现下载pop3邮件保存到本地

以上功能对于备份邮件还是比较有用的,因为附件也下载下来了。由于pop3邮件服务比较过时了,服务也不够稳定,目前采用IMAP的比较流行,后面有空再写个支持后者的,能支持用户自己输入选择,提取各个邮件客户端的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python闭包实现计数器的方法
May 05 Python
利用python代码写的12306订票代码
Dec 20 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
详解python-图像处理(映射变换)
Mar 22 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
python word转pdf代码实例
Aug 16 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
简单了解如何封装自己的Python包
Jul 08 Python
python求解汉诺塔游戏
Jul 09 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python+POP3实现批量下载邮件附件
Jun 19 #Python
python实现批量解析邮件并下载附件
Jun 19 #Python
Python3使用SMTP发送带附件邮件
Jun 16 #Python
Python3使用turtle绘制超立方体图形示例
Jun 19 #Python
python3使用SMTP发送HTML格式邮件
Jun 19 #Python
python3.X 抓取火车票信息【修正版】
Jun 19 #Python
python3使用SMTP发送简单文本邮件
Jun 19 #Python
You might like
php实现斐波那契数列的简单写法
2014/07/19 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
javascript深入理解js闭包
2010/07/03 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
JS实现简单打字测试
2020/06/24 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python检测网站链接是否已存在
2016/04/07 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
Python类型转换的魔术方法详解
2020/12/23 Python
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
如何选择使用结构还是类
2014/05/30 面试题
《将心比心》教学反思
2014/04/08 职场文书
员工工作自我评价
2014/09/26 职场文书