-----
- `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).
- 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.
- 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:
python
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:
python
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.