import urllib.request

import urllib.parse

import http.cookiejar,re

opener = None

# 带Cookie访问

def openurl(parms):

global opener

if opener == None:

#cookie设置

cj = http.cookiejar.CookieJar()

opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

ret = opener.open(parms)

return ret

def login_163(**parms):

#初始化

parms_key = ['domain','password','username']

arg = {}

for key in parms_key:

if key in parms:

arg[key] = parms[key]

else:

arg[key] = ''

#获取syscheckcode

pre_login = arg['domain']

html = openurl(pre_login).read().decode('utf-8')

patt = re.compile(r'.*?name=syscheckcode.*?value="(.*?)".*?')

syscheckcode = patt.search(html)

if not syscheckcode:

raise Exception('GET syscheckcode Fail!')

syscheckcode = syscheckcode.group(1)

#登陆

postdata = {

'syscheckcode':syscheckcode,

'password':arg['password'],

'username':arg['username'],

}

postdata = urllib.parse.urlencode(postdata)

postdata = postdata.encode('utf-8')

req = urllib.request.Request(

url= arg['domain'],

data=postdata

)

html = openurl(req).read().decode('utf-8')

thisurl = 'http://reg.163.com/Main.jsp?username=' + arg['username']

html = openurl(thisurl).read().decode('utf-8')

# 获取随机key

thisurl = 'http://entry.mail.163.com/coremail/fcg/ntesdoor2?verifycookie=1&lightweight=1&from=urs'

html = openurl(thisurl).read().decode('utf-8')

patt = re.compile(r'.*?@163.com&sid=(.*?)&from.*?')

sid = patt.search(html);

sid = sid.group(1)

# 获取sid

thisurl = 'http://mail.163.com/js6/main.jsp?sid=' + sid

html = openurl(thisurl).read().decode('utf-8')

thisurl = 'http://mail.163.com/js6/s?sid=' + sid + '&func=mbox:listMessages&topNav_mobileIcon_show=1&TopTabReaderShow=1&TopTabLofterShow=1'

# 获取邮件key --- 可以读取看看,实际上是一个类似xml的表,所有的邮件都在这里,我们需要的是key,这里是抽取的第一封邮件的key

html = openurl(thisurl).read().decode('utf-8')

patt = re.compile(r'.*?name="id">(.*?).*?')

key = patt.search(html);

key = key.group(1)

# 获取邮件内容

thisurl = 'http://mail.163.com/js6/read/readhtml.jsp?mid=' + key

html = openurl(thisurl).read().decode('utf-8')

# 测试输出

print(html)

# 假设返回假,,这个验证可以最后加上

flag = True

#if 'succeedhandle_login' in html:

#flag = True

return flag

# 这里是开始,我懒得缩进了 if __name__ == '__main__':

# 用户名 及 密码

while True:

user = input('input your username:')

pwd = input('input your password:')

if len(user) != 0 and len(pwd) != 0:

break

print('输入错误')

# 测试网站

dom='https://reg.163.com/logins.jsp'

try:

flag = login_163(username=user,password=pwd,domain=dom)

if not flag:

print('读取失败!')

exit(0)

else:

print('读取成功')

except Exception as e:

print('Error:',e)

反正大致过程就是上面那样,,,很标准的 post登陆,之后 163 的页面比较特殊,具体可以自己去试试。

那个key页面是抓包之后找到的,通过那个key就能获得每一封邮件了。

整个代码是从一份功能代码中抽出来,因为剩下的内容涉及xxx,所以不发了。

python读取163邮件内容_python 3.x 163邮箱登陆,邮件读取相关推荐

  1. python 读取邮件内容_Python 如何提取邮件内容

    欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...

  2. python 读取邮件内容_python获取邮件内容(邮件内容为html)

    用python获取邮件内容比较简单,直接用现成的imap和pop3包即可,但是有时候邮件的内容不是plainText而是html甚至是一个url链接,原本的操作流程是点击url获取内容(比如csv等等 ...

  3. python获取邮件内容_python 接收邮件获取邮件内容

    收取邮件有两种协议,POP3和IMAP,POP3相对于IMAP功能较少无法对邮件进行更深层次的操作,因此本文使用IMAP协议收取邮件.python提供了很多收邮件的模块,本文使用imaplib来接收邮 ...

  4. python爬取邮件内容_python 接收邮件获取邮件内容

    收取邮件有两种协议,POP3和IMAP,POP3相对于IMAP功能较少无法对邮件进行更深层次的操作,因此本文使用IMAP协议收取邮件.python提供了很多收邮件的模块,本文使用imaplib来接收邮 ...

  5. python实现邮件客户端_python socket实现web服务器,邮件客户端

    本博客是针对,<计算机网络自顶向下方法>一书第二章后面套接字编程作业, 所有代码均已上传至我的github:https://github.com/inspurer/ComputerNetw ...

  6. python修改zip文件内容_python操作zip文件

    转自: 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # 默认模式r,读 az ...

  7. hutool 读取扩展名文件_Python OpenCV视觉智能感知第一讲——读取摄像头或视频文件并播放显示...

    Python OpenCV视觉智能感知 第一讲--读取摄像头或视频文件并播放显示 本部分内容将深入.全面.详细地介绍如何使用Anaconda Python和OpenCV读取摄像头或视频文件,并进行播放 ...

  8. 邮件内容会留在服务器吗,outlook的邮件最长可以保存多久,去

    outlook的邮件最长可以保存多久,去年的邮件还可以找到吗?如何设置不自动删除过期的? 问题来自: 2020-01-01 0 / 200 提交回答 2021-07-30 关于 outlook的邮件最 ...

  9. electron 读取文件夹内容_如何使用Electron Framework选择,读取,保存,删除或创建文件...

    本文概述 为了处理文件(CRUD)的生命周期, 我们将使用对话框和文件系统组件. 对话框模块提供了用于显示本机系统对话框(例如打开文件或警报)的API, 因此Web应用程序可以提供与本机应用程序和No ...

  10. python读取大文件内容_Python模块linecache处理大文件

    linecache模块简介 Python处理大文件需要用到Linecache模块. linecache模块的作用是将文件内容读取到内存中,进行缓存,而不是每次都要从硬盘中读取,这样效率提高很多,又省去 ...

最新文章

  1. 【数字信号处理】线性常系数差分方程 ( “ 线性常系数差分方程 “ 与 “ 线性时不变系统 “ 关联 | 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 线性时不变系统方法 )
  2. Win下PHP环境Eclipse PDT+XAMPP+XDebug部署
  3. findfirstfile函数为什么不能遍历doc_编程之美:IO多路复用——记性不好的poll函数...
  4. synchronized的用法
  5. 算法题目——多米诺骨牌问题(POJ-2663)
  6. LeetCode 1891. 割绳子(二分查找)
  7. C语言 do while 和 while 循环 - C语言零基础入门教程
  8. 菜鸟python 正则表达式_python基础知识(进阶篇--正则表达式)
  9. linux 内核模块发送udp,在内核模块级缓冲UDP的问题(当然不是SOCKET编程了。)
  10. 视音频格式基础知识视频压缩
  11. 算法学习(三)堆排序
  12. I/O资源如何映射到内核虚拟空间
  13. 荐书|图解深度学习与神经网络:从张量到TensorFlow实现
  14. 如何使用 身份证归属地查询API
  15. java SpringBoot 对接支付宝 APP支付 证书模式及非证书模式
  16. Oxyplot实时绘图学习笔记(下)
  17. Haproxy启动故障:Starting proxy:cannot bind socke
  18. 工作第七周:提升版权意识,共塑良好共享氛围
  19. UE4 动画过渡同步组(解决动画过渡不合理问题)
  20. JQUREY DOM 操作详解

热门文章

  1. 大话拒绝服务攻击:DoS、DDoS、LDoS——“直男、舔狗和渣男”
  2. 快捷命令查看电脑系统信息
  3. GCTF 2017 Web 补题 By Assassin [持续更新--抄大佬wp]
  4. 神奇代码岛BOX获500万美元天使轮融资 构建编程少年元宇宙
  5. Spring| AOP之 引入(Introductions)
  6. EOJ 1224 简单迷宫问题 bfs
  7. AcWing 导弹防御系统 Python代码
  8. Python+MySQL+云服务器 定时爬取B站日榜与微博热搜榜信息并保存至数据库
  9. JavaScript大师Nicholas C. Zakas又一大作出中文版了
  10. 系统版本aplpha,Beta等表示的意思