python3收邮件_认真对待 Python3 收邮件

前言

之前老是用Python发邮件,用起来挺方便的。但是一直没实现用Python收邮件,最近忙着笔试面试,但是又不能时刻打开浏览器,刷手机看看有没有新邮件(尤其是有没有关于面试,笔试通知的邮件)啊。所以写个脚本来做下定时任务,一旦有相关的主题邮件,结合GUI控件,声音组件,给出提醒。

想来还是不错的。

封装好的客户端源码放到了我的GitHub上,有兴趣的可以下载下来试一试。

先来看下效果吧

收邮件其实是被Python内置支持的,名为poplib。安装了Python的话,就会默认存在于标准库中,用起来也很方便。下面就一步步的来实现今天的任务吧。

准备

由于要使用非官方客户端的方式来收取邮件,所以需要打开相应的服务。我本人使用的邮箱是163邮箱,其他的邮箱操作也是类似的。如下:

点击设置

开启pop/smtp/imap协议

先发一封邮件

给目标邮箱发一封邮件吧。我的内容如下:

至此,准备阶段就算是完成了。

初体验

初体验嘛,肯定是会比较简单的了。比如下面我先获取一些常用的信息:

# coding: utf8

import poplib

# 邮箱个人信息

useraccount = '你的邮箱'

password = '你的密码(注意这个密码是授权码,不是你客户端直接登录用的密码)'

# 邮件服务器地址。如果你的邮箱是163,那么可以这么写。qq的话就是pop.qq.com

pop3_server = 'pop.163.com'

# 开始连接到服务器

server = poplib.POP3(pop3_server)

# 可选项: 打开或者关闭调试信息,1为打开,会在控制台打印客户端与服务器的交互信息

server.set_debuglevel(1)

# 可选项: 打印POP3服务器的欢迎文字,验证是否正确连接到了邮件服务器

print(server.getwelcome().decode('utf8'))

# 开始进行身份验证

server.user(useraccount)

server.pass_(password)

# 返回邮件总数目和占用服务器的空间大小(字节数), 通过stat()方法即可

print("Mail counts: {0}, Storage Size: {0}".format(server.stat()))

# 使用list()返回所有邮件的编号,默认为字节类型的串

resp, mails, octets = server.list()

print("响应信息: ", resp)

print("所有邮件简要信息: ", mails)

print("list方法返回数据大小(字节): ", octets)

# 关闭与服务器的连接,释放资源

server.close()

运行结果呢?如下:

+OK Welcome to coremail Mail Pop3 Server (163coms[726cd87d72d896a1ac393507346040fas])

*cmd* 'USER 我的邮箱账号'

*cmd* 'PASS 哈哈不给你看'

*cmd* 'STAT'

*stat* [b'+OK', b'9', b'52140']

Mail counts: (9, 52140), Storage Size: (9, 52140)

*cmd* 'LIST'

响应信息: b'+OK 9 52140'

所有邮件简要信息: [b'1 1595', b'2 1631', b'3 1568', b'4 26710', b'5 2851', b'6 6856', b'7 1494', b'8 6685', b'9 2750']

list方法返回数据大小(字节): 73

试水

经过刚才的初体验,想必已经会和邮件服务器互动了吧。下面正式开始获取邮件。

比如我想获取邮件服务器上其中一封邮件,那么指定一下索引就可以了。

划水

# coding: utf8

import poplib

from email.parser import Parser

import base64

def get_parsed_msg():

# 邮箱个人信息

useraccount = '我的邮箱账号'

password = '密码不告诉你'

# 邮件服务器地址

pop3_server = 'pop.163.com'

# 开始连接到服务器

server = poplib.POP3(pop3_server)

# 可选项: 打开或者关闭调试信息,1为打开,会在控制台打印客户端与服务器的交互信息

server.set_debuglevel(1)

# 可选项: 打印POP3服务器的欢迎文字,验证是否正确连接到了邮件服务器

print(server.getwelcome().decode('utf8'))

# 开始进行身份验证

server.user(useraccount)

server.pass_(password)

# 使用list()返回所有邮件的编号,默认为字节类型的串

resp, mails, octets = server.list()

print('邮件总数: {}'.format(len(mails)))

# 下面单纯获取最新的一封邮件

total_mail_numbers = len(mails)

# 默认下标越大,邮件越新,所以total_mail_numbers代表最新的那封邮件

response_status, mail_message_lines, octets = server.retr(total_mail_numbers)

print('邮件获取状态: {}'.format(response_status))

print('原始邮件数据:\n{}'.format(mail_message_lines))

print('该封邮件所占字节大小: {}'.format(oc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值