What's new in WLMailAPI

Nektra's Windows Live Mail API supports the newest Windows Live Mail 2012 and works on all current versions of Windows 10, Windows 8, Windows 7, Windows Vista and Windows XP.

WLMailAPI changes from version 4.6.1 to 4.6.5

Released on Jan 2016

Fixes

  • Removed SharedSection to prevent AV detection.
  • Changed some code to remove BinScope warnings.
  • Updated Deviare In-Proc library.

WLMailAPI changes from version 4.6.0 to 4.6.1

Released on May 2015

Additions

  • Added SPECIALFOLDERTYPE enumeration for suitable GetSpecialFolderType return values.
  • Added missing version information for binary files.

Fixes

  • Removed obsolete and non-working function IFolderManager::ActivateGlobalNotification.
  • Fixed linker message about "Subsystem" option in latest VS 2013.
  • Fixed boost warning about "Unknown compiler" for VC18.0 (VS2013).
  • Fixed wlmail.exe hang on splash screen if WlMailAPI COM could not be loaded. Now a proper message box is displayed, and WLmail is allowed to run, but with our API disabled.
  • Updated code sign certification.
  • Works with Windows 8 (all builds)
  • Improved Performance

WLMailAPI changes from version 4.5.1 to 4.6.0

Released on December 2014

Fixes

  • All WLMailAPI COM library binaries and installer executable are properly code-signed.
  • This release includes security-enhanced compiler settings and applied patches to binary files as follows:
    • ASLR (Base Address Randomization) active by default.
    • NX (NoExecute-bit) active by default.
    • Security Update for Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package (KB2538243)
    • Visual Studio 2008 Service Pack 1 MFC Security Update (KB2538241)
    • Security Update for Microsoft Visual Studio 2008 Service Pack 1 (KB2669970)
    • Visual Studio 2008 Service Pack 1 ATL Security Update (KB971092)
    • Visual Studio 2008 Service Pack 1 GDIPLUS.DLL Security Update (KB972222)
    • Visual Studio 2008 Service Pack 1 ATL for Smart Devices Security Update (KB973675)
    • Visual Studio 2008 Service Pack 1 XML Editor Security Update (KB2251487)
    • Update for Microsoft Visual Studio 2008 Service Pack 1 (KB2938806)
  • Minor documentation and installer fixes.

WLMailAPI changes from version 4.5.0 to 4.5.1

Released on July 2014

Fixes

  • Fixed Commit in Failsafe mode where To/From fields in message record were filled with incorrect information.

WLMailAPI changes from version 4.4.0 to 4.5.0

Released on June 2014

Additions

  • Address Book support.
  • IMAP, Hotmail, Live and HTTP account support
  • Fixed non-working DeleteBodyProp, DeleteBodyPropByName functions.
  • Fixed header iteration: non-working GetFirstBodyHeader/GetNextBodyHeader for Windows Live Mail 2009.
  • Marked GetFirstBodyProp, GetNextBodyProp as obsolete functions.
  • Fixed issue where IMessage::GetBodySize always returned 0.
  • Fixed a pointer bug when calling GetFirstAccount() twice.

WLMailAPI changes from version 4.3.3 to 4.4.0

Released on February of 2014

Additions

  • Certified for Windows 8.1.
  • Certified for building under Visual Studio 2013 compiler suit.
  • Added support for Windows Live Mail 16.4.3508.0205.

WLMailAPI changes from version 4.3.2 to 4.3.3

Released on October of 2013

Fixes

  • Fixed a bug where the subject was not updated for a new or cloned message commit.

WLMailAPI changes from version 4.3.1 to 4.3.2

Released on August of 2013

Fixes

  • Fixed infinite loop at wlmail.exe startup due to a bug in the UIRIBBON.DLL IAT-table patching code.

WLMailAPI changes from version 4.1.1 to 4.3.1

Released on July of 2013

Additions

  • (VS2012): Changed platform toolset to v110_xp to enable Windows XP supported builds.
  • Added stricter error checking when working for methods involving message bodies.
  • NktRefCounted ASSERTs if assignment causes dangling pointer.
  • HRESULTs returned by FindRecord are now defined in headers with meaningful values.
  • IMessage::Commit documentation updated with more information regarding message identifier.
  • Added description for interfaces in .idl files.

Fixes

  • Fixed problem building Evaluation configuration in VS2008 using Makefiles.
  • Fixed entrypoint not found on XP installations by adding missing PSAPI.LIB linker input and PSAPI_VERSION=1 symbol definition.
  • On Debug builds, tlb2h won't generate EH wrappers. This allows for more precise bug detection. (e.g: some calls thrown access violation but went silent due to Comet EH behavior).
  • Fixed stack corruption when calling Commit or DeleteMessage.
  • Fixed internal GetClassInfoEx usage.
  • Fixed string leak at internal CBT hook.
  • Fixed GetNextFolder lacking NULL pointer check enumerating children.
  • Fixed a bug when loading plugins using plain DLL path instead of ProgId.
  • Fixed crash in GetDisplayFrom/GetDisplayTo when the property was a null pointer.
  • Fixed access violation when using SetBcc,SetTo,SetCC... methods on WLM2012.
  • Fixed connection limit problems in Move/Copy operations on IMAP accounts.
  • Fixed database session limit problems (0x800C0148) while operating on IMAP accounts.
  • Fixed deadlock when using Move with the same source and destination folders.
  • Fixed stack corruption on _CopyMessageEx function.
  • SetDisableThreadWaitOnCopyMove and SetDisableUIOnCopyMove are now DEPRECATED.
  • Changed IDL function comments: SetDisableUIOnCopyMove, SetDisable... accordingly.

WLMailAPI changes from version 3.6.0 to 4.1.1

Released on January of 2013

Additions

  • Added IMailAccount::GetAccountType returning server type of account (POP3, HTTP or IMAP).
  • Added SetDisableThreadWaitOnCopyMove method to allow the client plugin to fine tune thread synchronization.
  • Added HRESULT code to message fetch events for better error handling.
  • Added IFolderEvents OnCopyMoveMessageBegin and OnCopyMoveMessageComplete events to track copy/move async operations on IMAP/HTTP folders.
  • Added dispatch IDs constants: DISPID_GLOBAL_COPYMOVEBEGIN, DISPID_GLOBAL_COPYMOVEPROGRES, DISPID_GLOBAL_COPYMOVECOMPLETE.
  • Added jetMaxParamSessions registry key to allow modification of maximum database session usage.
  • Added jetParamMaxVerPages registry key to allow tuning version store page allocation.
  • Added EnablePerformanceCounters key to allow monitoring Live Mail through Windows Performance Monitor administrative tool.
  • Added SetDisableUIOnCopyMove function to allow UI block disable during Copy/Move operation.
  • Added store-related error codes to WlMailStore IDL namespace.

Fixes

  • CopyMessage(Ex)/MoveMessage(Ex) now block the caller thread.
  • Copy/move Callback events can be used with POP3 accounts.
  • Improved overall application performance and memory usage by fixing a bug where account enumerator caused a Database resource leak (version store) leading to eventual operational failure forcing user to shutdown application. This was reported sometimes in WLM as HRESULT 0x800C0160.
  • Related to the above fix, several message corruption issues were solved.
  • Improved memory usage when enumerating folders.
  • Fixes a bug where IMAP connections where left open causing server errors.
  • Fixes crashes when copying between local and remote folders.
  • Copy/Move operations now block UI as WLM native behaviour.
  • Fixes GetClientVersion() returning 15 instead of 16 on Windows Live Mail 2012.
  • VS2012 build fixes.
  • Fixed most compiler warnings.
  • Fixed "incompatible NktHookLib library compiler version" error.
  • Removed VS2012 suffix to projects. Naming is analog to the 2008 project set.

Note: Visual Studio 2012 compiler/tools compatibility at 90% (work in progress).

WLMailAPI changes from version 3.5.2 to 3.6.0

Released on November of 2012

Additions

  • Added IFolderManager::CopyMessageEx and IFolderManager::MoveMessageEx to copy multiple messages in one operation.

Fixes

  • IFolder::FetchMessage now returns TRUE on S_OK or E_PENDING asynchronous operation. 
  • CreateFolder return value significance detailed in function documentation.
  • Fixes DeleteMessage crash on WLM2009.
  • Fixes C# demo code to move multiple messages.
  • "Show Mail Addresses" C# demo button where where NTTP protocol accounts are listed incorrectly as mail accounts.
  • Removed IMAP Test Suite old code.

Note: Visual Studio 2012 compiler/tools compatibility at 90% (work in progress).

WLMailAPI changes from version 3.5.0 to 3.5.2

Released on November of 2012

Fixes

  • WLM no longer hangs when the first mail account is created.
  • Fixed issue in which the function IMsgWnd::SaveDraft would generate an error.
  • Fixed issue in which the IWLMailApiEvents::OnSendButtonMsgWndClicked would not be triggered when a hotkey is used instead of the proper button.
  • Fixed the IFolderManager::MoveMessage function.

WLMailAPI changes from version 3.0.1 to 3.5.0

Released on September of 2012

Fixes

  • Product works with Windows Live Mail 2012.
  • Fixes issue where HTTP accounts were not enumerated.
  • Fixes issue for copying messages between folders.
  • Fixes Copy/Move Messages operation between IMAP/HTTP folders.
  • Fixes exception for WLM2009 on IFolder::DeleteMessage.
  • Fixes deadlock on IFolder::DeleteMessage.
  • Fixed IMessage::GetFolderID() API to return 64-bit folder identifier.
  • Fixed CreateFolder, MoveFolder, RenameFolder and DeleteFolder APIs -- now support operation on HTTP/IMAP folders.
  • Fixed issue in wich Manage contacts button "reset" made WLM crash.
  • Normalized all folder ID's to 64-bit format.
  • Fixed issue in which WLM crashes after opening a lot of "New Mail" windows.
  • Fixed issue in which WLM 2009 contact error appears after using "Save to drafts" function several times.
  • Fixed more issues related to MsgWnd events not triggered by compose windows instantiated from the Find dialog.
  • Fixed issue in which WLM 2009 would hang when replying a message from the Find dialog.
  • Fixed issue in which having an ideographic space character in a contact name would truncate the strings returned by MsgWnd envelope properties.
  • Fixed issue in which MsgWnd envelope properties would be incorrect.
  • Fixed issue in which WLM would crash while getting a contact or a contact category.
  • Fixed issue in which closing a window from which another window was instantiated (i.e. using a custom button) would make WLM crash.
  • Fixed issue in which the "Add to Calendar" dialog would crash if the "Set Envelope" demo button is clicked.
  • Fixed issue in which some MsgWnd events would not be triggered when a compose window is instantiated from the Find dialog.
  • Fixed an issue in which a black bar would appear instead of ribbons when a toolbar is created.
  • Fixed an issue in which WLM would crash when GetDefaultAccount was called.
  • Fixes issue where Subject, DisplayFrom and DIsplayTo properties could not be read if IsOnLocalStore returned FALSE. Now it's posible to inspect those message properties even when the message is not downloaded yet.
  • Fixed demo function CommitIfNotInQuickViews to work on remote folders by cloning message instead of commiting.
  • Fixed demo code which was reporting normal folders incorrectly as QuickView folders.
  • Fixed LMailMessageInfo struct with 64-bit FolderID data.
  • Fixed OnTransaction event that was reporting 32-bit FolderIDs instead of 64-bit on INSERT/DELETE operations.
  • Fixed MessageRecord::GetFolderID to return 64-bit ID.

Features

  • Added IFolder::FetchMessage API to retrieve messages from IMAP/HTTP servers.
  • Added OnFetchMessageBegin and OnMessageFetchComplete events to track FetchMessage API operation.
  • Added global handling events: IFolderEvents::OnMessageFetchBegin / IFolderEvents::OnMessageFetchComplete.
  • Added dispatch IDs DISPID_GLOBAL_MESSAGEFETCHBEGIN, DISPID_GLOBAL_MESSAGEFETCHCOMPLETE.
  • Added convenient DISPID_ constants for folder events, for FolderManager events, and the account manager.
  • Added function IMessage::IsOnLocalStore().
  • Added function IFolder::GetAccount().
  • Added Fetch Message button to C# demo.
  • Added Tag/Move To Drafts C# code to demo.

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

WLMailAPI changes from version 3.0.0 to 3.0.1

Released on June of 2012

  • Fixed issue where WLM crashed after removing an API object instance (e.g: TMAS Disable toolbar crashing)
  • Fixed issue in which WLM showed emails that were not accessible
  • Fixed issue in which UI showed inconsistent data (unread email counts)
  • Fixed issue in which WLM would receive an unexpected OnNewMessage event on startup
  • Fixed issue in which having an outer process would freeze the UI
  • Fixed issue in which OnNewMessage event would not be received in ''Sent Items'' folder
  • Fixed GetState and SetState malfunction concerning UNREAD flag
  • Fixed SaveBodyToFile function
  • Fixed bug in which the Send/Receive button would not work if the Outbox folder is not empty
  • Fixed TMessage::GetState, TMessage::SetState for states NKT_MSG_UNREAD, NKT_MSG_SUBMITTED, NKT_MSG_UNSENT, NKT_MSG_RECEIVED, NKT_MSG_REPLIED, NKT_MSG_FORWARDED, NKT_MSG_FLAGGED
  • Fixed issue in which WLM would crash when using the ''Reply to Sender'' function in Inbox
  • Fixed issue in which the Outbox folder would be inaccessible after using the ''Reply To Sender'' function
  • Fixed issue in which UI would sometimes hang when calling Commit() on a message
  • Fixed issue in which UI would lockup when receiving emails and processing them on new message event
  • Fixed issue in which FolderSelectionChange event would not be fired in some contexts
  • Fixed issue in which UI would hang when using Search function or opening other folders (e.g: RSS)
  • Fixed issue in which WLM would sometimes crash when opening folders
  • Fixed object cleanup at WLM window close
  • Fixed issue in which WLM would crash on close

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

WLMailAPI changes from version 2.2.0 to 3.0.0

Released on February of 2012

  • Fixed issue in which WLM would crash when its main window is closed with a search in progress
  • Fixed issue in which WLM would randomly crash while interacting with the Find dialog
  • Fixed issue in which WLM would crash or wlmail.exe process would not end when the last WLM window closed is a compose window
  • Fixed issue in which WLM would show an unknown error when deleting more than 7000 emails from the Deleted items folder
  • Fixed issue in which WLM would hang when trying to delete a message in the Outbox folder during an OnNewMessageInOutbox event
  • Fixed issue in which FolderManager::OnNewMessage event would not be triggered when a message is moved by a WLM rule to a folder created by the user
  • Fixed issue in which the Send and Receive window would get unresponsive when receiving messages
  • Fixed issue in which WLM would crash if closed while receiving more than 5000 emails at once
  • Fixed issue in which a deadlock would occur when ALL plugins listed in the registry fail to load
  • Fixed issue in which IMessage::Send() function would send emails from an invalid account
  • Fixed NktWLMailStore::IMessage::DeleteBody and NktWLMailStore::IMessage::InsertBody functions
  • Fixed issue in which undesired characters would appear in plain text emails after sending, receiving and moving operations
  • Fixed issue in which the UI would be unresponsive when moving big amounts of emails between folders
  • Fixed issue in which WLM 2009 would freeze after using the ''Find'' function
  • Fixed issue in which ribbons would randomly appear as a black bar when launching WLM 2011
  • Fixed issue in which WLM 2009 would crash when a ''Compose'' window is opened
  • Fixed issue in which WLMApi would not work if WLM was closed and quickly reopened
  • Fixed issue in which emails were received twice if WLM was closed quickly after the receiving procedure
  • Fixed issue in which duplicated ''new message in outbox'' notifications were fired to client plugins.
  • Fixed issue where WLM crashed after removing an API object instance (e.g: TMAS Disable toolbar crashing)

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

WLMailAPI changes from version 2.0.2 to 2.2.0

Released on December of 2011

  • Fixed issue in which the function IToolbarButton::IsEnabled would always return true
  • Fixed issue in which account information would be lost when commiting a message
  • Fixed issue in which WLM would sometimes crash on startup
  • Fixed issue in which WLM would hang or crash when the main window or the Find dialog were closed during a search process
  • Fixed issue in which WLM would hang if the last window closed was a compose window and a draft was saved
  • Fixed issue in which WLM would crash if the last window closed was a compose window and a draft was saved
  • Fixed issue in which emails moved automatically by WLM did not trigger OnNewMessageInFolder events
  • Fixed issue in which the split button's OnClick event would be triggered when one of its subbuttons was clicked
  • Fixed issue in which WLM v15.4.3508.1109 would not close if the last window closed was a compose window
  • Fixed issue in which WLM would crash if WLMailApi was compiled using C++ optimizations in Visual Studio 2005
  • Fixed issue in which the Find dialog would randomly fail finding messages by content
  • Improved performance

Added API functions

  • TMsgWnd
  • Close
  • SendDraft
  • IMessage
  • SetAccount
  • SaveToStream
  • LoadFromStream
  • AddAttachmentFromStream
  • SetSubject
  • SaveDraft
  • GetFirstBodyHeader
  • GetNextBodyHeader
  • GetAccount
  • SendAs
  • GetFilename
  • IMsgWnd
  • SetTo
  • SetCc
  • SetBcc
  • SetSubject
  • IWLMailApi
  • *GetLastSelectedMailFolderID
  • IToolbarButton
  • SetName
  • GetName
  • SetName
  • SetImageNormal

Added API events

  • IFolderManagerEvents
  • OnFolderCreated
  • IFolderManager
  • OnFolderDeleted
  • OnFolderMoved
  • IWLMailApi
  • OnMessageDownloadStarted
  • OnMessageDownloadFinished

Added features

  • Contacts API
  • ComposeMail ribbon customization
  • Support for Toggle buttons
  • Contact support (except contact removal)
  • Builds on VS2005

Demos

  • New demo button icons
  • Fixed, reorganized and improved C# demo buttons

Performance

  • Improved ribbon buttons response time
  • Improved ''Send & Receive'' procedure speed
  • Improved performance when receiving and processing emails

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

Changes from version 2.0.1 to 2.0.2

Released on September of 2011

  • Fixed: Application Error on Vista SP2
  • Fixed: Error when uninstalling WLMailApi, usually presented when trying to install newer versions.
  • Fixed: NktWLMailApi::IWLMailApiEvents::OnSendButtonMsgWndClicked( [in] LONG msgWndId ) not properly triggers if only New Message Window is open.
  • Fixed: NktWLMailApi::IMsgWnd::CancelSend()
  • Fixed: WLMail Crash on close in specific enviroments
  • Fixed: some other minor bugs
  • Implemented NktWLMailApi::IToolbarButton::CreateSubSeparator( [out, retval] IToolbarButton ** newButton ) allowing to create separators in sub buttons menu.
  • Implemented Comet new version "comet-3gamma33" to support 64bit integers.
  • Improved performance.

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

Changes from version 2.0.0 to 2.0.1

Released on June of 2011

  • Updated existing demo projects to include all new implementations.
  • Added new C# Outer Process Access Demo.
  • Added new C++ Regular DLL Demo ( no COM server )
  • Implemented: IMailAccountManagerEvents::OnDefaultAccoutChanged() event.
  • Implemented: IWLMailApi::GetDefaultToolbar([in] LONG index) allowing to create buttons on default Windows Live Mail 2011 toolbars.
  • Implemented: IWLMailApi::GetClientVersion([out] LONG version) allowing to get current Windows Live Mail version.
  • Implemented: IToolbar::CreateButton([in] BSTR name,[in] BSTR bmpNormal,[in] BSTR bmpMouseOver,[in] BOOL isDropDown,[out, retval] IToolbarButton **) allowing to create a button that can contain sub buttons inside.
  • Implemented: IToolbarButton::CreateSubButton(([in] BSTR name,[in] BSTR bmpNormal,[in] BSTR bmpMouseOver,[in] BOOL isDropDown,[out, retval] IToolbarButton **newButton) allowing to create sub buttons.
  • Implemented: IToolbarButton::SetEnabled([in] BOOL enabled) on Windows Live Mail 2011.
  • Fixed: Regular DLL to create Toolbars ( no COM server )
  • Fixed: Outer Process Support
  • Fixed: IWLMailApiEvents::OnNewMessageInOutbox([in] LONG msgId)
  • Fixed: IWLMailApi::SetSelectedFolderID([in] LONG selFolderId)

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

Changes from version 1.0.2 to 2.0.0

Released on June of 2011

  • Now supporting Windows Live Mail 2011 with ribbons.
  • Improved stability.
  • Improved performance.
  • Fixed: Memory leak when moving or deleting many messages left wlmail.exe process running after closing it.

http://nektra.com/products/wlmailapi-windows-live-mail-api-plugin/changelog

Changes from version 1.0.1 to 1.0.2

Released on June of 2010

  • Fixed: Memory leak when moving or deleting many messages left wlmail.exe process running after closing it.
  • Fixed: WLMail crashed when having an IMAP account.
  • Fixed: Getting a Toolbar object during the WLMailApiEvents::OnFolderSelectionChange event freezed WLMail.
  • Fixed the way WLMailApiAgent hooks the WLMail.exe process to avoid WLMailApiLoader.dll to be loaded in every process.
  • Implemented: WLMailApiEvents::OnNewMessageInOutbox event that allows to modify and commit outgoing messages.
  • Implemented: IWLMailApiEvents::OnSendButtonMsgWndClicked which is triggered when a new message window is set to be sent.
  • Implemented: MsgWnd::GetTo(), GetCc(), GetBcc(), GetSubject(), SetTo(), SetCc(), SetBcc() and SetSubject().
  • Added IMailAccountManager and IMailAccount interfaces to get the Default Account.
  • Implemented: FolderManager::GetInboxFolder(), GetDraftFolder(), GetSentFolder(), GetJunkFolder(), GetDeletedFolder() for the Default Account.
  • Implemented: Folder::IsInbox(), IsDraft(), IsSent(), IsJunk(), IsDeleted() functions for Default Account special folders.
  • Implemented: FolderManager::GetOutboxFolder() and Folder::IsOutbox() functions.
  • Added Unicode support to main API functions:
    • IFolderManager::CreateFolder() and RenameFolder()
    • IFolder::GetName(), Rename(), CreateFolder() and CreateMessage()
    • IMessage::GetSubject(), GetAllBody(), GetBody(), GetBodyText(), GetBodyDisplayName(), GetFilename() and SaveAsFile()
    • IMessage: For GetBodyProp() and SetBodyProp() functions, the message must be already encoded in Unicode