All Versions
73
Latest Version
Avg Release Cycle
36 days
Latest Release
-
Changelog History
Page 6
Changelog History
Page 6
-
v1.10.0 Changes
๐ Removed the
verify_ssl
argument toAccount
,discover
andConfiguration
. If you need to disable TLS verification, register a customHTTPAdapter
class. A sample adapter class is provided for convenience:from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter
-
v1.9.6 Changes
- ๐ Support new Office365 build numbers
-
v1.9.5 Changes
- ๐ Added support for the
effective_rights
field on items and folders. - ๐ Added support for custom
requests
transport adapters, to allow proxy support, custom TLS validation etc. - Default value for the
affected_task_occurrences
argument toItem.move_to_trash()
,Item.soft_delete()
andItem.delete()
was changed to'AllOccurrences'
as a less surprising default when working with simple tasks. - Added
Task.complete()
helper method to mark tasks as complete.
- ๐ Added support for the
-
v1.9.4 Changes
- ๐ Added minimal support for the
PostItem
item type - ๐ Added support for the
DistributionList
item type - ๐ Added support for receiving naive datetimes from the server. They
will be localized using the new
default_timezone
attribute onAccount
- ๐ Added experimental support for recurring calendar items. See examples in issue #37.
- ๐ Added minimal support for the
-
v1.9.3 Changes
- ๐ Improved support for
filter()
,.only()
,.order_by()
etc. on indexed properties. It is now possible to specify labels and subfields, e.g..filter(phone_numbers=PhoneNumber(label='CarPhone', phone_number='123'))
.filter(phone_numbers__CarPhone='123')
,.filter(physical_addresses__Home__street='Elm St. 123')
, .only('physical_addresses__Home__street')` etc. - ๐ Improved performance of
.order_by()
when sorting on multiple fields. - Implemented QueryString search. You can now filter using an EWS
QueryString, e.g.
filter('subject:XXX')
- ๐ Improved support for
-
v1.9.2 Changes
- Added
EWSTimeZone.localzone()
to get the local timezone - Support
some_folder.get(item_id=..., changekey=...)
as a shortcut to get a single item when you know the ID and changekey. - ๐ Support attachments on Exchange 2007
- Added
-
v1.9.1 Changes
- ๐ Fixed XML generation for Exchange 2010 and other picky server versions
- ๐ Fixed timezone localization for
EWSTimeZone
created from a static timezone
-
v1.9.0 Changes
- ๐ Expand support for
ExtendedProperty
to include all possible attributes. This required renaming theproperty_id
attribute toproperty_set_id
. - When using the
Credentials
class,UnauthorizedError
is now raised if the credentials are wrong. - ๐ง Add a new
version
attribute toConfiguration
, to force the server version if version guessing does not work. Accepts aexchangelib.version.Version
object. - Rework bulk operations
Account.bulk_foo()
andAccount.fetch()
to return some exceptions unraised, if it is deemed the exception does not apply to all items. This means that e.g.fetch()
can return a mix of`Item
andErrorItemNotFound
instances, if only some of the requestedItemId
were valid. Other exceptions will be raised immediately, e.g.ErrorNonExistentMailbox
because the exception applies to all items. It is the responsibility of the caller to check the type of the returned values. - The
Folder
class has new attributestotal_count
,unread_count
andchild_folder_count
, and arefresh()
method to update these values. - The argument to
Account.upload()
was renamed fromupload_data
to justdata
- ๐ Support for using a string search expression for
Folder.filter()
was removed. It was a cool idea but using QuerySet chaining andQ
objects is even cooler and provides the same functionality, and more. - Add support for
reminder_due_by
andreminder_minutes_before_start
fields onItem
objects. Submitted by@vikipha
. - Added a new
ServiceAccount
class which is likeCredentials
but does whatis_service_account
did before. If you need fault-tolerane and usedCredentials(..., is_service_account=True)
before, useServiceAccount
now. This also disables fault-tolerance for theCredentials
class, which is in line with what most users expected. - โก๏ธ Added an optional
update_fields
attribute tosave()
to specify only some fields to be updated. - Code in in
folders.py
has been split into multiple files, and some classes will have new import locaions. The most commonly used classes have a shortcut in __init__.py - ๐ Added support for the
exists
lookup in filters, e.g.my_folder.filter(categories__exists=True|False)
to filter on the existence of that field on items in the folder. - When filtering,
foo__in=value
now requires the value to be a list, andfoo__contains
requires the value to be a list if the field itself is a list, e.g.categories__contains=['a', 'b']
. - ๐ Added support for fields and enum entries that are only supported in some EWS versions
- Added a new field
Item.text_body
which is a read-only version of HTML body content, where HTML tags are stripped by the server. Only supported from Exchange 2013 and up. - Added a new choice
WorkingElsewhere
to theCalendarItem.legacy_free_busy_status
enum. Only supported from Exchange 2013 and up.
- ๐ Expand support for
-
v1.8.1 Changes
- Fix completely botched
Message.from
field renaming in 1.8.0 - ๐ Improve performance of QuerySet slicing and indexing. For example,
account.inbox.all()[10]
andaccount.inbox.all()[:10]
now only fetch 10 items from the server even thoughaccount.inbox.all()
could contain thousands of messages.
- Fix completely botched
-
v1.8.0 Changes
- Renamed
Message.from
field toMessage.author
.from
is a Python keyword sofrom
could only be accessed asGetattr(my_essage, 'from')
which is just stupid. - ๐ Make
EWSTimeZone
Windows timezone name translation more robust - Add read-only
Message.message_id
which holds the Internet Message Id - Memory and speed improvements when sorting querysets using
order_by()
on a single field. Allow setting
Mailbox
andAttendee
-type attributes as plain strings, e.g.:calendar_item.organizer = '[email protected]' calendar_item.required_attendees = ['[email protected]', '[email protected]'] message.to_recipients = ['[email protected]', '[email protected]']
- Renamed