python想要保存QQ邮箱富途的附件
来源:互联网 发布:珀莱雅淘宝店真假 编辑:程序博客网 时间:2024/05/01 02:31
一、前言
对于编程来说,我期望的是并不仅仅用于make money,而是出于生活,融于生活。
最近炒股,每天都会有一封邮件发到我的QQ邮箱,里面有今天账户的结算信息,感觉这个挺有意义的,可以记录每天的交易情况和相关费用,但是我又不想每天去下载这个附件。于是乎花了一个晚上研究了一下python的poplib库,完成了一个拉取QQ邮箱附件的程序。
二、实现
2.1 poplib是什么?
poplib是一个python的一个模块,用于专门的处理邮箱的邮件,是基于pop3的协议。使用的话用import poplib就可以了。
2.2 代码说明
想要解析邮件分为几个步骤:
- 第一步:创建链接
- 1
- 2
- 3
- 4
使用poplib库创建一个SSL的链接,然后分别设置这个connect的几个参数,分别是:- debugmode:0为关闭,1为开启。如果开启的话,会显示交互时的日志。- username :邮箱的账号- password :邮箱的密码- host : 对应的邮箱的pop3协议的host,qq邮箱是pop.qq.com
注:这里有个坑爹的东西,如果直接用qq密码用作password的话,会提示这个报错 poplib.error_proto: -ERR Please using authorized code to login.
跟着这个链接进去看,是因为qq出于安全的考虑,使用pop协议的时候,需要使用一个16位的密保来进行操作。按照链接里面的提示设置好了密码,再填入就可以使用了。
- 第二步:获取邮件
几个主要的API:
- 1
- 2
- 3
stat()用于获取邮件的状态,例如:有46封邮件
Messages: 46. Size: 3819672
list()用于获取邮件的列表状态:
(‘+OK’, [‘1 196394’, ‘2 35328’, ‘3 195761’, ‘4 19024’, ‘5 63952’, ‘6 196662’, ‘7 45720’, ‘8 197030’, ‘9 15565’, ‘10 36985’, ‘11 2550’, ‘12 31237’, ‘13 26712’, ‘14 18984’, ‘15 15990’, ‘16 12196’, ‘17 21966’, ‘18 194291’, ‘19 194885’, ‘20 126483’, ‘21 14534’, ‘22 29710’, ‘23 196006’, ‘24 13974’, ‘25 34424’, ‘26 195320’, ‘27 202168’, ‘28 24900’, ‘29 22061’, ‘30 7843’, ‘31 53405’, ‘32 7958’, ‘33 7913’, ‘34 200682’, ‘35 5349’, ‘36 15979’, ‘37 34286’, ‘38 53619’, ‘39 198150’, ‘40 25144’, ‘41 7366’, ‘42 196818’, ‘43 214880’, ‘44 196847’, ‘45 18007’, ‘46 194614’], 461)
pop_conn.retr()则是用于获取每封邮件的状态了
- 第三步:解析邮件
分为两步:
1、先把pop_conn.retr()获得的一封邮件格式化一下,把其中的分割符化成”\n”(具体这一步的意义我没有深究,应该是方便email模块去解析)
- 1
- 2
注意每个邮件mssg里面只有mssg[1]是内容。
2、然后对邮件进行解析转化成Message对象
- 1
- 2
3、然后就可以获取到对应的邮件内容了
- 1
- 2
- 3
- 4
- 5
不过这些我都不需要,我只需要里面的附件内容。
4、保存附件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
遍历一下msg,如果有附件就存下来,这里需要注意的是需要对文件的名字进行解码。
然后找个目录存下来吧。
有个问题,不知道为什么只能取到最近的一个月的邮件,有点奇怪,不知道是不是QQ邮箱的限制了。
三、源码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
四、后续问题
1)可以是用定时任务做个每天定时拉取应该不错。
2)关于文章中的一些转码问题还是头疼了一小会,没想到系统的defaultencoding是ASCII.. 所以要在文件头加上
- 1
- 2
- 3
关于解码:
使用这个解码方法解出dh也是可以的,dh[0][0]是内容,dh [0][1]是当前的编码。
3)关于各个邮箱的pop协议的host可以自行百度
例如:
pop.163.com是网易的
pop.live.com是微软的
宁波整容医院http://www.lyxcl.org/
- python想要保存QQ邮箱富途的附件
- 【Python融于生活】之我想要保存QQ邮箱富途的附件
- python smtp QQ邮箱 发送附件
- 模仿QQ邮箱添加附件的javascript
- 模仿QQ邮箱添加附件的javascript
- 邮箱附件 保存到指定的文件夹
- Python登录qq邮箱发送邮件(附件)
- 腾讯QQ邮箱的"超大附件"功能, 很让人失望
- QQ邮箱今天大面积出现无法下载附件的问题
- qq邮箱附件文件名乱码处理方法
- 带附件的邮箱发送
- python模拟登录qq邮箱
- python脚本初探---新手写的QQ邮箱发送脚本
- QQ邮箱----破解7次附件下载限制(C#版)
- java 发送邮件(qq邮箱作为发件箱,带附件)
- WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)
- 有没有谁想要Gmail的邮箱?
- C#中使用QQ邮箱发邮件带附件,防止附件被锁定
- 浅谈HTTP中Get与Post的区别
- Unity中的数值问题
- android studio 无法在可视化页面预览布局文件或预览有偏移现象
- VS编译c工程
- 谈谈java中的WeakReference
- python想要保存QQ邮箱富途的附件
- linux命令快捷键
- AS中Genymotion安装使用及各种踩坑
- 算法-01-二分查找/插值查找
- 欢迎使用CSDN-markdown编辑器
- Mybatis Generator
- myeclipse 2016+2017 破解文件
- oracle分页排序查询
- JavaScript与Java的关系