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 07 Python
django 自定义用户user模型的三种方法
Nov 18 Python
Python fileinput模块使用介绍
Nov 30 Python
安装Python的教程-Windows
Jul 22 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
学习python分支结构
May 17 Python
python实现多进程通信实例分析
Sep 01 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
python分别打包出32位和64位应用程序
Feb 18 Python
keras.layer.input()用法说明
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
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python正则表达式分组概念与用法详解
2017/06/24 Python
详解python中的文件与目录操作
2017/07/11 Python
python3实现基于用户的协同过滤
2018/05/31 Python
pandas通过索引进行排序的示例
2018/11/16 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
Python如何获取文件指定行的内容
2020/05/27 Python
解决Python安装cryptography报错问题
2020/09/03 Python
前台接待岗位职责
2013/12/03 职场文书
森林防火工作方案
2014/02/14 职场文书
岗位职责说明书模板
2014/07/30 职场文书
2014年公司工作总结
2014/11/22 职场文书
婚育证明样本
2015/06/16 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript