$npx skillfedfor your agent

exchangelib

Client for Microsoft Exchange Web Services (EWS)

With conditionsPyPI CommunicationsReleased Oct 20252.0M downloads / moBSD-2-ClausePure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — exchangelib-5.6.0-py3-none-any.whl
v5.6.0 · released 2025-10-10 · Python >=3.10 · 12 runtime deps: cached_property, defusedxml, dnspython, isodate, lxml, oauthlib, pygments, requests

Yes, if you need to programmatically interact with Exchange or Office365 mailboxes. The library is actively maintained, has no known vulnerabilities, low install friction, and a permissive license. The Python 3.10+ requirement and dependency on network connectivity to an Exchange server are the only real constraints; verify autodiscover and authentication methods match your deployment before committing.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.10 or later; Exchange server connectivity and valid credentials required.
  • Low install friction with a pure Python wheel distribution.
  • The package is actively maintained with a recent release and 1268 repository stars, indicating stable community adoption.

License · maintenance · safety

BSD-2-Clause (permissive) — BSD-2-Clause is a permissive license that allows commercial and private use with minimal restrictions, making this package suitable for most projects.

last release 2025-10-10 (308 days) · last repo commit 2026-06-23 · 1,268 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 2,049,110 downloads/mo, #3,340 on PyPI

Verify before relying

from exchangelib import Credentials, Account

credentials = Credentials("user@example.com", "password")
account = Account("user@example.com", credentials=credentials, autodiscover=True)

for item in account.inbox.all()[:10]:
    print(item.subject, item.sender)
  • Whether autodiscover works reliably across all Exchange versions (2007-2016) and Office365 tenants.
  • Performance characteristics when handling large mailboxes or complex queries.
  • Specific authentication methods supported beyond basic credentials and OAuth.
Same gist for agents: .md · .json

What it is and what it does

exchangelib is a Django-style ORM wrapper around Microsoft Exchange Web Services (EWS), designed to simplify programmatic access to on-premise Exchange 2007-2016 servers and Office365. It abstracts the complexity of the EWS protocol, offering a Pythonic interface for common mailbox operations: searching, creating, updating, and deleting items across mail, calendar, tasks, contacts, and distribution lists. The library includes built-in autodiscover support to locate the correct EWS endpoint automatically.

The package depends on 12 runtime libraries including requests for HTTP communication, defusedxml for secure XML parsing, OAuth support via oauthlib and requests_oauthlib, NTLM authentication via requests_ntlm, and timezone handling through tzdata and tzlocal. It requires Python 3.10 or later and is distributed as a pure Python wheel, making installation straightforward across platforms.

Use it for

  • Automate mailbox management tasks like archiving, filtering, or bulk-moving emails based on custom criteria.
  • Sync Exchange calendar events to external systems or build calendar-aware applications.
  • Extract contact information and distribution lists for directory synchronization or reporting.
  • Build monitoring or audit tools that query mailbox metadata and message properties.
  • Integrate Office365 mailbox data into data pipelines or ETL workflows.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you need to programmatically interact with Exchange or Office365 mailboxes.

The library is actively maintained, has no known vulnerabilities, low install friction, and a permissive license. The Python 3.10+ requirement and dependency on network connectivity to an Exchange server are the only real constraints; verify autodiscover and authentication methods match your deployment before committing.

Install

exchangelib on PyPI

Before you install

Low install friction with a pure Python wheel distribution. The package is actively maintained with a recent release and 1268 repository stars, indicating stable community adoption.

Requires Python 3.10 or later; Exchange server connectivity and valid credentials required.

License in practice

BSD-2-Clause is a permissive license that allows commercial and private use with minimal restrictions, making this package suitable for most projects.

Quickstart

from exchangelib import Credentials, Account

credentials = Credentials("user@example.com", "password")
account = Account("user@example.com", credentials=credentials, autodiscover=True)

for item in account.inbox.all()[:10]:
    print(item.subject, item.sender)

Verify before relying

  • Whether autodiscover works reliably across all Exchange versions (2007-2016) and Office365 tenants.
  • Performance characteristics when handling large mailboxes or complex queries.
  • Specific authentication methods supported beyond basic credentials and OAuth.

Package facts

LicenseBSD-2-Clause permissive
Python supportSupports the current Python release >=3.10
Install frictionLow. Pure-Python wheel
Runtime dependencies
12 packages
cached_propertydefusedxmldnspythonisodatelxmloauthlibpygmentsrequestsrequests_ntlmrequests_oauthlibtzdatatzlocal
MaintenanceActively maintained 308 days since the last release
Last repo commit
First released
Downloads2,049,110 / month, #3,340 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 5 - Production/StableProgramming Language :: Python :: 3Topic :: Communications

Evidence: exchangelib-5.6.0-py3-none-any.whl

Tags

Capabilities
exchange web services clientmicrosoft exchange mailbox accessews python libraryoffice365 mailbox automationexchange calendar contacts tasks
Topics
email-automationexchange-integration
PyPI keywords
autodiscoverewsexchangeexchange-web-servicesmicrosofto365office365outlook

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “exchange web services client”

Give your agent the search over MCP, or paste the wish link into any chat.

More Communications packages

pyasn1 Worth it
PyPI · Python Modules · released Jul 2026

Pyasn1 encodes and decodes ASN.1 data structures using BER, CER, DER, and native Python codecs, allowing you to serialize complex data for network protocols and file formats.

Install it if you need to work with ASN.1-based protocols or formats; it is the standard library for this in Python and has no known vulnerabilities.

permissive licensepure Python · 3.8+
570.9Mdownloads / mo
pyasn1-modules Worth it
PyPI · Python Modules · released Mar 2025

Provides a collection of ASN.1 data structures expressed as Python classes, built on the pyasn1 library, for working with ASN.1-based protocols and standards.

BSD-3-Clausepure Python · 3.8+aging
462.5Mdownloads / mo
kombu Worth it
PyPI · Python Modules · released Dec 2025

Kombu is a messaging library that provides a high-level Python interface to AMQP and other message brokers, supporting pluggable transports for RabbitMQ, Redis, MongoDB, Amazon SQS, and others.

Install it if you are building any distributed system that requires reliable message passing.

permissive licensepure Python · 3.9+
58.9Mdownloads / mo
humanfriendly With conditions
PyPI · Software Development · released Sep 2021

Formats and parses numbers, file sizes, timespans, and other values into human-readable text; provides terminal interaction utilities including ANSI text styling and user prompts.

MITpure Pythonabandoned
54.3Mdownloads / mo
coloredlogs With conditions
PyPI · Software Development · released Jun 2021

Adds colored output to Python's standard logging module using ANSI escape sequences, with automatic fallback support for Windows terminals.

However, it is abandoned and receives no maintenance, so it will not adapt to future Python changes or platform updates.

MITpure Pythonabandoned
39.6Mdownloads / mo
phonenumbers Worth it
PyPI · Communications · released Aug 2026

Parse, validate, format, and analyze international phone numbers across all countries, with support for extracting geographic, carrier, and timezone information from phone number data.

Apache-2.0pure Python · 2.5+
38.8Mdownloads / mo

See also office365 · o365 · nylas · microsoftgraph-python · exchange_calendars · SharePlum · imap-tools · IMAPClient · pandas_market_calendars · langchain-google-calendar-tools