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中yield关键词的作用与用法
Nov 29 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
Python tkinter事件高级用法实例
Jan 31 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
python如何生成网页验证码
Jul 28 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
详解用Python进行时间序列预测的7种方法
Mar 13 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
python FTP编程基础入门
Feb 27 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
python得到单词模式的示例
2018/10/15 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
白酒业务员岗位职责
2013/12/27 职场文书
中文专业毕业生自荐书范文
2014/01/04 职场文书
30年同学聚会感言
2014/01/30 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
乔迁之喜主持词
2014/03/27 职场文书
股东授权委托书范文
2014/09/13 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
python数字类型和占位符详情
2022/03/13 Python