Exchangelib
Python client for Microsoft Exchange Web Services (EWS)
Install / Use
/learn @ecederstrand/ExchangelibREADME
Exchange Web Services client library
This module is an ORM for your Exchange mailbox, providing Django-style access to all your data. It is a platform-independent, well-performing, well-behaving, well-documented, well-tested and simple interface for communicating with an on-premise Microsoft Exchange 2007-2016 server or Office365 using Exchange Web Services (EWS). Among other things, it implements autodiscover, and functions for searching, creating, updating, deleting, exporting and uploading calendar, mailbox, task, contact and distribution list items.
Teaser
Here's a short example of how exchangelib works. Let's print the first
100 inbox messages in reverse order:
from exchangelib import Credentials, Account
credentials = Credentials("john@example.com", "topsecret")
account = Account("john@example.com", credentials=credentials, autodiscover=True)
for item in account.inbox.all().order_by("-datetime_received")[:100]:
print(item.subject, item.sender, item.datetime_received)
Documentation
Documentation is available at https://ecederstrand.github.io/exchangelib/. Source code documentation is available at https://ecederstrand.github.io/exchangelib/exchangelib/.
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.2kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
337.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
