######## Overview ######## **O365 - Microsoft Graph API made easy** .. important:: With version 2.1 old access tokens will not work, and the library will require a new authentication flow to get new access and refresh tokens. This project aims to make interacting with Microsoft Graph easy to do in a Pythonic way. Access to Email, Calendar, Contacts, OneDrive, 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 --------------- * `Alejcas `_ * `Toben Archer `_ * `Geethanadh `_ We are always open to new pull requests! Quick example ------------- Here is a simple example showing how to send an email using python-o365. Create a Python file and add the following code: .. code-block:: python 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. * 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!) Rebuilding HTML Docs -------------------- * Install ``sphinx`` python library: .. code-block:: console pip install sphinx * Run the shell script ``build_docs.sh``, or copy the command from the file when using on Windows