使用O365库与Python标记Outlook邮件为已读失败求助
解决O365库标记Outlook邮件为已读无效的问题
你遇到的问题核心在于:修改邮件的is_read或unread属性后,没有调用保存方法将更改同步到Exchange服务器,本地属性修改不会自动同步到云端。
修正后的代码
只需在设置属性后调用message.save()方法即可完成云端同步:
def access_mail_box(account): try: mailbox= account.mailbox() inbox= mailbox.inbox_folder() query = mailbox.new_query().on_attribute('isRead').equals(False) #获取未读邮件 messages = inbox.get_messages(query=query,limit=config['limit']) return messages except Exception as e: print(f"Error in access_mail_box function: {e}") raise e account = Account(credentials=(client_id, client_secret), token_backend=token_backend) messages = access_mail_box(account) # 遍历邮件并标记为已读 for message in messages: message.is_read = True # 也可以用 message.unread = False,二者效果一致 message.save() # 关键步骤:将本地修改同步到服务器
额外注意事项
- 确保你的应用已申请
Mail.ReadWrite权限,没有该权限无法修改邮件状态 - 若处理大量邮件,可使用O365库的批量操作功能提升效率
内容的提问来源于stack exchange,提问作者TaghreedReda
相关产品推荐
相关产品推荐

