前言
我在上一篇博客里面讲说要继续维护O365-Mail-Manager这个项目的,现在可能不能兑现了。
原因
- 学业繁重。
- 有问题始终无法解决
- 这仅仅是一个练手的项目,我在描述中也写了这只是个代码示例。
具体的问题
- 无法使用公共客户端流,所以无法隐藏应用机密,这样不安全。
- 要加载邮件的全文,需要获取它的ID,而我好像没有找到相应的方法。
- 本人是一个新手,很多语法还不会,继续写下去的话,会使代码更加冗乱,便失去了参考意义了。
- 我写代码用的电脑经常崩溃。现在有点不敢用它了。
后续步骤
- 我已在Github上面公布了我的源码,链接在上一篇博客里,欢迎大家接管这个项目,我仍会不定时的去查看大家的建议,或者是拉取请求,我永远对拉取请求开放。
- 大家也可以看一看我的项目所依赖的一个项目 O365 也在Github 上面,链接在上一篇文章里面有,但是由于我手机贴链接不方便,所以就只能麻烦大家自己去看了。
最后向大家道个歉,由于以上原因,这个项目可能在很长时间内都不会再更新了。但如果以后有机会还会再做的,主要还看大家想不想要?
7.23 10:24
我觉得绝这样把项目扔下来不好,于是在这里贴出源码,Github链接也放出来。
from O365 import Account
class mailbox_actions:
"""用来对邮箱进行操作"""
def __init__(self, choice=None):
self.credentials = ('74424fcf-55d7-4e15-99d7-1663c0ba2e94', 'UCDadI4_uwyc.~GYfyG_Ni4pMOT54e.an8')
# 这是我的应用ID和机密,但是公共客户端流还是没有实现,文档里说下面改为
# self.account = Account(self.credentials, auth_flow_type=‘pubic')
# (上面是我的理解)就行了但他报错
self.account = Account(self.credentials)
self.choice = choice
self.scopes = ['basic', 'message_all'] # 请求权限
def check_if_authenticated(self):
"""检查是否有用户登录,若无,则请求登录"""
if not self.account.is_authenticated: # 检查是否登录
# 请求登录
self.account.authenticate(scopes=self.scopes)
def Read_email(self):
"""遍历邮件
limit 表示加载多少个,微软官方一次API调用只返回999个,
而O365模块默认25个,只有limit>25时utils分页功能才生效
batch批处理表示加载多少次,就是往后加载
limit=2000, batch=10 = limit=2000
但是分为10次加载。"""
mailbox = self.account.mailbox()
inbox = mailbox.inbox_folder()
for messages in inbox.get_messages(limit=200, batch=100): # 下面的都是utils分页的
print(messages)
for messages in mailbox.junk_folder().get_messages(limit=200, batch=100):
print(messages)
for messages in mailbox.deleted_folder().get_messages(limit=200, batch=100):
print(messages)
for messages in mailbox.drafts_folder().get_messages(limit=2000):
print(messages)
for messages in mailbox.sent_folder().get_messages(limit=2000, batch=10):
print(messages)
# 准备加入选择进入哪个文件夹
def start(self):
"""应用入口"""
self.choice = input('进入邮箱还是日历?(E/C)')
if self.choice == 'E':
self.choice = input('看邮件还是写邮件?(R/W)')
if self.choice == 'R':
mailbox_actions().Read_email()
elif self.choice == 'W':
print('开发中,请稍后')
else:
mailbox_actions().start()
elif self.choice == 'C':
print('开发中,敬请期待')
else:
mailbox_actions().start()
mailbox_actions().check_if_authenticated()
mailbox_actions().start()
Github项目链接:
O365-Mail-Manager
python-o365感谢此项目!没有它,我的项目也无法实施!