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两种遍历字典(dict)的方法比较
May 29 Python
Python Tkinter简单布局实例教程
Sep 03 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
Python检测QQ在线状态的方法
May 09 Python
使用Python实现简单的服务器功能
Aug 25 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python使用Geany编辑器配置方法
Feb 21 Python
初学者学习Python好还是Java好
May 26 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
什么是Python中的匿名函数
Jun 02 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
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
php生成微信红包数组的方法
2019/09/05 PHP
Prototype String对象 学习
2009/07/19 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
详解JS函数防抖
2020/06/05 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python的UTC时间转换讲解
2019/02/26 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
用django设置session过期时间的方法解析
2019/08/05 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
工厂会计员职责
2014/02/06 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
警示教育片观后感
2015/06/17 职场文书
村主任当选感言
2015/08/01 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis