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中的内置函数getattr()介绍及示例
Jul 20 Python
Python中使用partial改变方法默认参数实例
Apr 28 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
20个常用Python运维库和模块
Feb 12 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
Python制作动态字符画的源码
Aug 04 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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
jQuery 性能优化指南(2)
2009/05/21 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
详解package.json版本号规则
2019/08/01 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
python套接字流重定向实例汇总
2016/03/03 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
pytorch permute维度转换方法
2018/12/14 Python
numpy.where() 用法详解
2019/05/27 Python
python创建子类的方法分析
2019/11/28 Python
pycharm安装及如何导入numpy
2020/04/03 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
公共事业管理本科生求职信
2013/10/07 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
怎样写离婚协议书
2015/01/26 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
地雷战观后感
2015/06/09 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书