Easy EWS Changelog
[25-11-2023] - Version 8.2.3 Build 1
- Added: Support for Delphi 12
- Improved: Added support for Autodiscover via SRV records.
- Improved: Added support for Single-Letter Second-Level Domain names.
- Improved: Fixed an issue with saving messages as draft messages
- Improved: Added the option to set MessageFlags when importing .eml messages
- Solved: Fixed an issue with importing saved .eml files.
- Solved: The Anchor was not set correctly for dealing with CAS servers.
- Solved: Fixed an isue with the OAuth2 Redirect form.
[28-11-2022] - Version 8.2.2 Build 6
- Improved: Some improvements to the autodiscover functionality (AutodiscoverV2 is now supported).
- Solved: Fixed an issue with impersonation accounts using the ClientCredentials grant.
[23-10-2022] - Version 8.2.2 Build 1
- Improved: Some improvements to the autodiscover functionality.
- Solved: Autodiscover now also uses OAuth2 (when configured) instead of Basic Authentication
- Improved: Some improvements to the profile manager.
[03-10-2021] - Version 8.2.1 Build 10
- Added: Support for Delphi 11 Alexandria.
- Improved: Some improvements to the autodiscover functionality.
- Solved: The changeKey of a Folder ItemId was not set properly.
- Solved: Item attachments were not retrieved correctly.
- Solved: The "X-Unsent" value is now set when downloading the mime content of a draft message.
- Improved: Some improvements to the profile manager.
[04-02-2021] - Version 8.2.1 Build 2
- Improved: Easy EWS now uses an embedded browser when a user needs to authenticate using a browser (OAuth2 Authorize Grant) instead of using an external browser. This allows Easy EWS to close the browser window after the user has authenticated him/herself.
- Solved: When using the OAuth2 Authorize grant an authoration was requested for every event request call.
- Improved: The OAuth2 ClientSecret is now encrypted before being persisted.
- Improved: Some improvements to the profile manager.
- Improved: The Autodiscover data is now only used for the first connection (to determine the serverlocation if not specified) and when trying to listen for events on multiple messagestores.
[01-11-2020] - Version 8.1.1 Build 41
- Added: Support for Delphi 10.4.1 Sydney.
- Solved: The TRwEWS.ConvertId() did not return valid results
- Solved: Some issues with the TRwEWSAddressBookDialog
- Solved: A "ErrorTooManyObjectsOpened" exception was raised after a few calls when using OAuth2, without autodiscover and with impersonation.
- Solved: Some minor issues when using OAuth2.
[01-06-2020] - Version 8.1.1 Build 35
- Added: Support for Delphi 10.4 Sydney
- Refactored: The profile creation page now uses OAuth as default authentication mechanism (instead of basic authentication) and the form has been redesigned to make OAuth more prominent. You can find an OAuth setup guide here: Setting up OAuth
- Improved: The OAuth error handling has been improved.
- Added: Support for reading/writing the Out-Of-Office settings via the IRwEWSMsgStore.OpenOOF() method. The OutOfOffice example applition (in the basic examples folder) demonstrates how you can use this functionality.
- Solved: Reading the body of messages could cause exceptions when the body content contained XML data.
- Added: The TRwEWSession.TimezoneCount function and TRwEWSession.Timezones[] property can now be used to list all available/supported Timezone ID's.
- Solved: It was not possbible to use the notifications without the Autodiscover functionality.
[01-12-2019] - Version 8.1.1 Build 24
- Solved: The package sources for Delphi 10.3 were missing from the setup.
- Added: It's now possible to set Connect, Send and Read Timeouts using the TRwEWSSession.TimeOuts property.
- Added: The TRwEWSSession.OnShowProfileDialog() can now be used to modify the profile dialog (eg. to fill in some default values) before it's shown.
- Added: The IRwEWSFolder.GetItem() can now be used to open a item from a folder (as alternative to IRwEWSMsgStore.GetItem()).
- Solved: In some cases it was not possible to subscribe to events of multiple stores. In those cases only the events of one of the subcribed stores were triggered.
- Solved: In some cases the folder events would stop working after a random amount of time.
- Solved: The Session.AutoDiscover(AEmailAddress) always used the email address of the first logon instead of the provided argument value.
- Improved: The AutoDiscover process now stores the location of the last successfull call and uses that location as primary location for later calls to improve the peformance when retrieving autodiscover data for multiple email addresses.
- Solved: It was not possible to resolve names of distributionlists.
[11-08-2019] - Version 8.1.1 Build 6
- Added: The Delphi 10.3 libraries have been rebuild with Delphi 10.3.2 and the "Runtime Package Compatibility Patch"
- Added: The IRwEWSCalendarItem.SetTimezoneStartDateTime() and .SetTimezoneEndDateTime() have been added to set datetime start- and enddatetimes for a specific timezone.
- Solved: In some cases an EListError exception was raised when saving a message after having retrieved all properties of the message.
- Solved: In some cases an ErrorInvalidRequest exception was raised when saving a message with an empty messagebody.
[31-03-2019] - Version 8.1.0 Build 9
- Added: OAuth2 Authentication support. Easy EWS now fully supports the Authorize, Password and Client Credentials grants for Windows applications. Easy EWS uses a local browser and webserver when the Authorize grant is used. The SessionLogon example demonstrates how to logon using OAuth.
- Added: Easy EWS now uses "EWS Affinity" to make sure the notification requests are send to the correct mail server.
- Improved: The autodiscover process is now faster and raises better exceptions in case something is wrong (eg. authentication failure).
- Solved: When requesting an occurence of a newly created recurring appointmenty, immediately after saving it, an exception was raised.
- Solved: Some issues with the TRwWinHTTPClient which could cause authentication issues when using Easy EWS in a NT-Service application.
[25-11-2018] - Version 8.0.1 Build 10
- Added: Delphi 10.3 Rio support.
- Solved: Custom properties were not saved for new items when using Exchange 2013.
- Improved: The AutoDiscover functionality now works better with all different versions of Exchange/Office 365.
- Improved: Timezone support.
- Improved: Support for Exchange 2013 without SP1 installed.
- Added: You can now use the Session.GetMailTips() to retrieve the mailtips for a given user. The GetMailTips example application demonstrates how you can use this.
- Added: You can now use the Session.GetUserAvailability() to retrieve the availability for a given user. The MsgStoreAppointments example application demonstrats how you can use this.
- Solved: Some minor issues.
[17-09-2018] - Version 8.0.0 Build 18
- Solved: The Item.PropertyByName() always returned a property with an empty value.
[10-09-2018] - Version 8.0.0 Build 16
- Solved: Saving file attachments to a stream always resulted in empty streams.
- Solved: Reading/Writing the IsPrivate and Sensitivity properties of an item did not work correctly.
- Solved: Values for various folderproperties were not returned correctly.
- Solved: The TRwEWSFolderDialog did not work correctly.
- Solved: Some minor issues.
[01-06-2018] - Version 8.0.0 Build 10
- Modified: Easy EWS is now a Cross-Platform compatible. It can be used on all platforms supported by Delphi.
IMPORTANT Large parts of the code have been refactored in order to make Easy EWS Cross-Platform compatible. Some of the changes can break existing code
- Improved: Exchange 2010 support.
- Solved: Various minor issues.
[12-02-2018] - Version 7.3.0 Build 1
- Solved: In some cases the SubmitMessage would raise an exception for messages with attachments.
- Solved: Fixed an authentication issue with the HTTP Cllient which could lead to authentication failures when Basic Authentication was used.
- Solved: When specifying a Timezone Id when creating an appointment (Appointment.StartTimeZone.Id := "GMT Standard Time") the timezone was not stored with the appointment after saving it.
- Improved: The Addressbook dialog is now centered in the parent form and the default actions have been refactored to act more like the Outlook addressbook dialog.
[21-12-2017] - Version 7.2.2 Build 28
- Modified: The Delphi 10.2.2. libraries have been recompiled with Delphi 10.2.2. build 2004.
- Added: The "OpenOtherUsersMailbox" example application (in the advanced examples folder). This example demonstrates how to open other messagestores using EWS Impersonation.
- Solved: Fixed some minor issues in various example applications
- Solved: In some cases a "Bad Request" exception was raised when logging on using Autodiscover.
[16-12-2017] - Version 7.2.2 Build 24
- Solved: It was not possible to reconnect to an Exchange server after an authentication failure.
- Added: The SessionLogon example application now also demonstrates how to connect to an Exchange server without using connection profiles.
- Added: It's now possible to use inline, base64 encoded, images in HTML messagetext. Easy EWS will automatically convert these images to inline attachments. Both the SendHtmlMessage (in the basic examples folder) and the SendFormattedMessage (in the intermediate examples folder) demonstrate how this works.
- Solved: In some cases an exception was raised while trying to delete an existing attachment from a previously saved message.
- Solved: In some cases an exception was raised while trying to submit a previously saved draft.
- Solved: The profile manager no longer keeps showing a password dialog after a failed login attempt.
- Added: It's now possible to create a Reply, ReplyAll and/or Forward message for a specific E-Mail (IRwEWSEMail.CreateReply() and IRwRwEWSEmail.Forward(). The MsgStoreCheckInbox example application demonstrates how this works.
- Added: It's now possible to set binary values (like the MPR_SEARCH_KEY) and to search for them.
- Added: The MsgStoreCheckInbox example application in the Intermediate examples folder demonstrates how to work with E-Mail messages.
- Solved: IPV6 is now fully supported
- Solved: Some minor issues.
[27-09-2017] - Version 7.2.2 Build 7
- Added: When creating an item (task, contact, appointment etc) it's now possible to specify in which store the item must be created (Easy EWS Enterprise only) using the added "SmtpAddress"argument of the Session.CreateItem() method.
- Solved: In some cases a Timezone exception was raised on non-english systems.
- Solved: Some minor issues.
[13-08-2017] - Version 7.2.2 Build 1
- Added: Delphi 10.2 packages have been recompiled with Delphi 10.2.1.
- Added: The EWSSession now has a CurrentTimeZoneContext property. The value of this property is used for datetime conversions to UTC. The default value is the timezone of the system.
- Added: The retrieval of the Master Categorie List (GetCategories) has been moved from the IRwEWSFolder to the IRwEWSMsgStore.
- Added: It's now possible to manage the contact photo using the IRwEWSContact.SetUserPhoto().
- Improved: The IRwEWSContact has been refactored. It's now a whole lot easier to manage email addresses, phyiscal addresses, phone numbers etc.
- Added: It's now possible to Update and Delete attachments.
- Added: It's now possible to load attachmendata from a TStream.
- Added: The IRwEWSMsgStore.GetRoomLists and IRwEWSMsgStore.GetRooms can be used to get Room information.
- Added: It's now possible to open shared folders (via EWSSession.AdditionalMailboxes).
- Added: All MAPI properties have been added as constant.
- Solved: In some cases All-Day events where not created successfully.
- Solved: Some issues with running EWS wintin a NT-Service.
- Solved: Some issues with receiving notification from multiple stores.
- Solved: Many minor issues.
[07-05-2017] - Version 7.2.1 Build 11
- Added: The IRwEWSAttachment.SaveToFile() and .SaveToStream() can be used to access the content of the attachments of received messages.
- Solved: Some issues with sending updates to attendees of appointments after changing either the appointment or the list of attendees.
- Solved: The data saved by IRwEWSItem.SaveToFile() was base64 encoded (instead of regular text).
- Solved: Some issues with modifying and/or deleting property values of existing messages.
- Solved: A calendarview table never returned EOF when a smaller value for "MaxItemsReturned" was used than the amount of actual rows.
[08-04-2017] - Version 7.2.1 Build 4
- Solved: A memory leak in the TRwEWSFolderEvents.
- Solved: It was not possible to delete a recurrency from a recurring appointment.
- Solved: An exception was raised after saving an updated invitation for which a recipient was removed from the list of attendees.
- Solved: Some minor issues with example applications.
[29-03-2017] - Version 7.2.1 Build 0
- Added: Delphi 10.2 Tokyo support
- Solved: A few minor issues.
[05-03-2017] - Version 7.2.0 Build 56
- Added: Easy EWS now supports sending out Meeting Invitations and responding to Meeting Requests (Enterprise license only).
- Added: IRwEWSMsgStore.GetIdentity(). This method can be used to get the mailbox info of the owner of the store.
- Solved: Contacts were always resolved to OneOff recipients.
- Solved: Some minor issues.
[05-02-2017] - Version 7.2.0 Build 50
- Modified: The TRwEWSFolderEvents can now be used to monitor events of multiple folders. The Appointments demo application demonstrates how you can use this.
- Solved: A memory leak when using table restrictions.
- Solved: Appointment Recurrency Schedules can now be deleted.
- Added: The IRwEWSPropObject.DeleteProperty() method. This method can be used to delete a property.
[14-01-2017] - Version 7.2.0 Build 42
- Improved: The IRwEWSItem.TextBody can now also be used with Exchange 2010.
- Added: The IRwEWSPropObject.HasProperty() can now be used to check if a message has a certain property.
- Solved: Various issues with the TRwEWSProfileConfigFileContainer.
- Solved: The IRwEWSCalendarItem.GetRecurringMaster now also works for appointments which are created with applications other than Exchange
- Solved: Various issues in the handling of Extended Properties
[01-01-2017] - Version 7.2.0 Build 37
- Added: An advanced example application which demonstrates how to use Easy EWS in a multi threaded application.
- Added: An advanced example application which demonstrates how to use Easy EWS in a NT-Service application.
- Added: Support for Extended Properties.
- Added: IRwEWSFolder.GetCategories(); This call can be used to get the name, color and keyboard shortcut of each category.
- Improved: The Autodiscover code now successfully handles redirections.
- Improved: The EWSSession.AdditionalMailboxes property now also contains the delegate mailboxes mentioned in the Autodiscover data.
- Solved: Saving a email draft raised an exception.
- Solved: Many reported issues.
[29-11-2016] - Version 7.2.0 Build 23
- Added: Support for recurring appointments (Easy EWS Enterprise only).
- Added: IRwEWSCalendarFolder.GetCalendarView(); The regular IRwEWSFolder.GetItems() does not return the seperate occurrences of recurring appointments (only the RecurringMaster), The GetCalendarView() also returns the seperate occurrences.
- Added: IRwEWSCalendarItem.GetOccurrence(); The GetOccurrence() can be used to get a single occurrence of a recurring appointment (by index).
- Added: IRwEWSCalendarItem.GetRecurringMaster; This method can be used to open the "Series" (=RecurringMaster) when an occurrence is opened.
- Solved: A few minor issues.
[06-11-2016] - Version 7.2.0 Build 18
- Solved: Creating a profile to connect to an Office 365 server no longer raises exceptions.
- Solved: A few minor issues.
[27-10-2016] - Version 7.2.0 Build 16 (Pre-Release)
- Solved: The EWS Notifications handler no longer raises exceptions when invalid XML data is detected in the notification stream.
- Solved: A few minor issues.
[23-10-2016] - Version 7.2.0 Build 15 (Pre-Release)
- New: Folder Dialog; The folder dialog can be used to select a folder.
- Solved: Various issues with the Autodiscover functionality.
- Solved: Many minor issues.
[03-10-2016] - Version 7.2.0 Build 12 (Beta)
- New: Name resolving; Recipientslists can now be resolved.
- New: Addressbook Dialog; The addressbook dialog can be used to search for contacts.
- New: Moving, editing, deleting and clearing folders
- Solved: Various minor issues.
[25-09-2016] - Version 7.2.0 Build 8 (Beta)
- New: Folder Events. The folder events can be used to get notified about items created, deleted, updated and/or modified.
- New: Advanced Appointments Example Application.
- New: Moving, editing and deleting items (Messages, Contacts, Appointments and Tasks)
- Solved: Many small issues.
[28-08-2016] - Version 7.1.5 Build 9 (Beta)
- New: Creating Appointments.
- New: Appointments Example Application.
- New: Creating Tasks.
- New: Tasks Example Application.
- New: MessageStore Content Example Application.
- Solved: Many small issues.
[01-05-2016] - Version 7.1.5 Build 3 (Beta)
- New: Delphi 10.1 Berlin support.
- New: Creating contacts.
- New: Contact Example Application.
- New: The EasyEWS.inc can now be used to specify which versions of Exchange must be supported.
- Improved: Error handling when a method is used which is not supported by the connected Exchange Server (but is by a later version of Exchange).
[17-04-2016] - Version 7.1.5 Build 2 (Beta)
- Fixed: All the example applications now also work with Exchange 2007.
[09-04-2016] - Version 7.1.5 Build 1 (Beta)
- New: Create EWS Profiles.
- New: Logon to Exchange Server using serverurl, username and password or via preconfigured profile.
- New: Open the root messagestore and loop through all folders and messages.
- New: Create and send E-Mail (plain text or html, with our without attachments).
- New: Open and view E-Mail messages.