pyexchange 0.6
A simple library to talk to Microsoft Exchange
License: Apache

PyExchange
===================

[![Build Status](https://travis-ci.org/linkedin/pyexchange.svg)](https://travis-ci.org/linkedin/pyexchange) [![Coverage Status](https://coveralls.io/repos/linkedin/pyexchange/badge.png?branch=master)](https://coveralls.io/r/linkedin/pyexchange?branch=master)

PyExchange is a library for Microsoft Exchange.

It's incomplete at the moment - it only handles calendar events. We've open sourced it because we found it useful and hope others will, too.

If you're interested, please see the CONTRIBUTING notes in the repo for hints on where to get started.

Documentation
-------------

Go to https://pyexchange.readthedocs.org for the most recent, up-to-date version of documentation.

Installation
------------

PyExchange supports Python 2.6 and 2.7, and as of 0.6, is Python 3 compatible. Non CPython implementations may work but are not tested.

We support Exchange Server version 2010. Others will likely work but are not tested.

To install, use pip:

    pip install pyexchange

About
-----

Once upon a time there was a beautiful princess, who wanted to connect her web application to the royal Microsoft Exchange server.

The princess first tried all manner of SOAP libraries, but found them broken, or slow, or not unicode compliant, or plain just didn't work with Exchange.

"This totally bites," said the princess. "I need like four commands and I don't want to make my own SOAP library."

She then discovered Microsoft had excellent documentation on its Exchange services with full XML samples.

"Bitchin," said the princess, who had watched too many 80s movies recently. "I'll just write XML instead."

So she did, and it worked, and there was much feasting and celebration, followed by a royal battle with accounting over what constituted reasonable mead expenses.

And everybody lived happily ever after.

THE END



Changes
=======

0.1 (June 24, 2013)
--------------------

Team release - shakin' the bugs out. 


0.2 (July 1, 2013)
--------------------

Internal company release - RELEASE THE KRAKEN.


0.3 (July 17, 2013)
------------------

Initial public release. 


0.3.1 (April 18, 2014)
----------------------

Integrating some more granular exception handling.

0.4 (June 2, 2014)
------------------

We had some great contributions, so this is a release for that. 

Alejandro Ramirez (got-root):

- Added functionality to create/delete/get/find/move folders of all types. (Creating a new CalendarFolder is creating a new calendar in exchange)
- Added ability to create events in specific folders.
- Added ability to move events between calendars (folders).
- Created tests for all new features. 

Ben Le (kantas92)

* Fixed unicode vs bytecode encoding madness when sending unicode.

0.4.1 (June 15, 2014)
------------------

Turns out I actually didn't release Ben Le's code when I thought I did. Bad release engineer, no biscuit. 

0.4.2 (October 3, 2014)
----------------------

Alejandro Ramirez (got-root):

- Bug fixes around the new folder code. 
- More documentation on how to use folders. 


0.5 (October 15, 2014)
----------------------

** This release has a potential backwards incompatible change, see below **

* Pyexchange uses requests under the hood now (@trustrachel)

    Hey did you know that requests can do NTLM? I didn't. The internal connection class now uses requests
    instead of the clunky urllib2.

    There's a backwards incompatible change if you're subclassing the connection object. Requests doesn't
    need nearly the crud that urllib2 did, so I changed some of the methods and properties.

    Almost nobody should use this feature, but beware if you do.

* You can get a list of events between two dates. This was a big limitation of the library before, so a huge
 thank you to Eric Matthews (@ematthews))

* Fixed bug causing retrieved events to not be in UTC. (Thanks to Alejandro Ramirez (@got-root))

* Integrated with travis (finally).

0.5.1 (Nov 17, 2014)
--------------------

* Bugfix release because we broke stuff :(


0.6 (January 20, 2015)
----------------------

* Python 3 conversion complete! yaaaaaaaaaay