O365/python-o365

A simple python library to interact with Microsoft Graph and Office 365 API

Python

1,930

691 commits

updated Oct 5, 2026

See the code

README

Downloads PyPI PyPI pyversions

O365 - Microsoft Graph and related APIs made easy

This project aims to make interacting with the Microsoft api, and related apis, easy to do in a Pythonic way. Access to Email, Calendar, Contacts, OneDrive, Sharepoint, etc. Are easy to do in a way that feel easy and straight forward to beginners and feels just right to seasoned python programmer.

The project is currently developed and maintained by alejcas.

Core developers

We are always open to new pull requests!

Detailed docs and api reference on O365 Docs site

Quick example on sending a message:

from O365 import Account

credentials = ('client_id', 'client_secret')

account = Account(credentials)
m = account.new_message()
m.to.add('to_example@example.com')
m.subject = 'Testing!'
m.body = "George Best quote: I've stopped drinking, but only while I'm asleep."
m.send()

Why choose O365?

  • Almost Full Support for MsGraph Rest Api.
  • Good Abstraction layer for the Api.
  • Full oauth support with automatic handling of refresh tokens.
  • Automatic handling between local datetimes and server datetimes. Work with your local datetime and let this library do the rest.
  • Change between different resource with ease: access shared mailboxes, other users resources, SharePoint resources, etc.
  • Pagination support through a custom iterator that handles future requests automatically. Request Infinite items!
  • A query helper to help you build custom OData queries (filter, order, select and search).
  • Modular ApiComponents can be created and built to achieve further functionality.

This project was also a learning resource for us. This is a list of not so common python idioms used in this project:

  • New unpacking technics: def method(argument, *, with_name=None, **other_params):
  • Enums: from enum import Enum
  • Factory paradigm
  • Package organization
  • Timezone conversion and timezone aware datetimes
  • Etc. (see the code!)
addressbook
calendar
calendars
email
excel
graph
mailbox
microsoft
microsoft-api
microsoft-graph-api
microsoft-teams
oauth
oauth-authentication
office-365-rest-api
onedrive
outlook
planner
python
sharepoint

O365/python-o365

A simple python library to interact with Microsoft Graph and Office 365 API

Python

1,930

691 commits

updated Oct 5, 2026

See the code

README

Downloads PyPI PyPI pyversions

O365 - Microsoft Graph and related APIs made easy

This project aims to make interacting with the Microsoft api, and related apis, easy to do in a Pythonic way. Access to Email, Calendar, Contacts, OneDrive, Sharepoint, etc. Are easy to do in a way that feel easy and straight forward to beginners and feels just right to seasoned python programmer.

The project is currently developed and maintained by alejcas.

Core developers

We are always open to new pull requests!

Detailed docs and api reference on O365 Docs site

Quick example on sending a message:

from O365 import Account

credentials = ('client_id', 'client_secret')

account = Account(credentials)
m = account.new_message()
m.to.add('to_example@example.com')
m.subject = 'Testing!'
m.body = "George Best quote: I've stopped drinking, but only while I'm asleep."
m.send()

Why choose O365?

  • Almost Full Support for MsGraph Rest Api.
  • Good Abstraction layer for the Api.
  • Full oauth support with automatic handling of refresh tokens.
  • Automatic handling between local datetimes and server datetimes. Work with your local datetime and let this library do the rest.
  • Change between different resource with ease: access shared mailboxes, other users resources, SharePoint resources, etc.
  • Pagination support through a custom iterator that handles future requests automatically. Request Infinite items!
  • A query helper to help you build custom OData queries (filter, order, select and search).
  • Modular ApiComponents can be created and built to achieve further functionality.

This project was also a learning resource for us. This is a list of not so common python idioms used in this project:

  • New unpacking technics: def method(argument, *, with_name=None, **other_params):
  • Enums: from enum import Enum
  • Factory paradigm
  • Package organization
  • Timezone conversion and timezone aware datetimes
  • Etc. (see the code!)
addressbook
calendar
calendars
email
excel
graph
mailbox
microsoft
microsoft-api
microsoft-graph-api
microsoft-teams
oauth
oauth-authentication
office-365-rest-api
onedrive
outlook
planner
python
sharepoint

Project health

Overall

3.6/10

Maintained

5/10

Code review

3/10
OpenSSF Scorecard

PyPI

Latest release

2.1.10 · Sep 9, 2026

Releases this year

3

Significant stargazers

Weston Platter

175 followers · starred Oct 2023

Jonas Hörsch

83 followers · starred Jul 2021

imoonkey

18 followers · starred May 2023

Leonid Ganeline

87 followers · starred Nov 2023