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之Python安装
Sep 12 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
python GUI实现小球满屏乱跑效果
May 09 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Python callable内置函数原理解析
Mar 05 Python
python求前n个阶乘的和实例
Apr 02 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
python设置中文界面实例方法
Oct 27 Python
Python实现智慧校园自动评教全新版
Jun 18 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安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
感谢信模板大全
2015/01/23 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python