Exchange Web Services client library v2.0.0 Release Notes

Release Date: 2019-08-21 // over 4 years ago
    • Item.mime_content is now a text field instead of a binary field. Encoding and decoding is done automatically.
    • The Item.item_id, Folder.folder_id and Occurrence.item_id fields that were renamed to just id in 1.12.0, have now been removed.
    • The Persona.persona_id field was replaced with Persona.id and Persona.changekey, to align with the Item and Folder classes.
    • In addition to bulk deleting via a QuerySet (qs.delete()), it is now possible to also bulk send, move and copy items in a QuerySet (via qs.send(), qs.move() and qs.copy(), respectively).
    • 0️⃣ SSPI support was added but dependencies are not installed by default since it only works in Win32 environments. Install as pip install exchangelib[sspi] to get SSPI support. Install with pip install exchangelib[complete] to get both Kerberos and SSPI auth.
    • 0️⃣ The custom extern_id field is no longer registered by default. If you require this field, register it manually as part of your setup code on the item types you need:

      from exchangelib import CalendarItem, Message, Contact, Task
      from exchangelib.extended_properties import ExternId
      
      CalendarItem.register('extern_id', ExternId)
      Message.register('extern_id', ExternId)
      Contact.register('extern_id', ExternId)
      Task.register('extern_id', ExternId)
      
    • 🚚 The ServiceAccount class has been removed. If you want fault tolerance, set it in a Configuration object:

      from exchangelib import Configuration, Credentials, FaultTolerance
      c = Credentials('foo', 'bar')
      config = Configuration(credentials=c, retry_policy=FaultTolerance())
      
    • It is now possible to use Kerberos and SSPI auth without providing a dummy Credentials('', '') object.

    • 🔧 The has_ssl argument of Configuration was removed. If you want to connect to a plain HTTP endpoint, pass the full URL in the service_endpoint argument.

    • We no longer look in types.xsd for a hint of which API version the server is running. Instead, we query the service directly, starting with the latest version first.