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字符遍历的艺术
Sep 06 Python
Python深度优先算法生成迷宫
Jan 22 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 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安全性漫谈
2012/06/28 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
JS实现简单日历特效
2020/01/03 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
医院总经理职责
2013/12/26 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
小学二年级学生评语
2014/04/21 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
普通党员整改措施
2014/10/24 职场文书
党员评议自我评价
2015/03/03 职场文书
科技活动总结范文
2015/05/11 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
MySQL 全文检索的使用示例
2021/06/07 MySQL
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
python利用while求100内的整数和方式
2021/11/07 Python