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解决鸡兔同笼问题的方法
Dec 20 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
简单了解OpenCV是个什么东西
Nov 10 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python获取中文字符串长度的方法
Nov 14 Python
django框架模板语言使用方法详解
Jul 18 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
解决pip install psycopg2出错问题
Jul 09 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
Django websocket原理及功能实现代码
Nov 14 Python
Python Django 后台管理之后台模型属性详解
Apr 25 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python中的自省(反射)详解
2015/06/02 Python
python PyTorch预训练示例
2018/02/11 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Python enumerate内置库用法解析
2020/02/24 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
银行求职推荐信范文
2013/11/30 职场文书
运动会拉拉队口号
2014/06/09 职场文书
激励口号大全
2014/06/17 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers