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中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
Python实现GUI学生信息管理系统
Apr 05 Python
用Python实现读写锁的示例代码
Nov 05 Python
Python登录系统界面实现详解
Jun 25 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
Python实现快速排序的方法详解
Oct 25 Python
python tkinter控件布局项目实例
Nov 04 Python
python 多进程队列数据处理详解
Dec 23 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
pip安装tensorflow的坑的解决
Apr 19 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php 短链接算法收集与分析
2011/12/30 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
php文件下载处理方法分析
2015/04/22 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python实现的建造者模式示例
2018/08/06 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python实现图片转字符小工具
2019/04/30 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
python属于哪种语言
2020/08/16 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
培训讲师邀请函
2014/01/10 职场文书
战略合作协议书范本
2014/04/18 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
Promise静态四兄弟实现示例详解
2022/07/07 Javascript