" vbWatchdog is off the chart. It solves a long standing problem of how to consolidate error handling into one global location and avoid repetitious code within applications. "
- Joe Anderson, Microsoft Access MVP
Meet Shady, the vbWatchdog mascot watching over your VBA code → (courtesy of Crystal Long, Microsoft Access MVP)
Fixed: Possible crash when 64-bit edition of Outlook was installed, combined with high availability of RAM.
Update: v1.15.4, 30-Sep-2015
Re-release of v1.15.3, with updated license agreement.
Update: v1.15.3, 24-Sep-2015
Improved: parsing of malformed HTML when processing image attachments (with vbMAPI_OutlookSignature::SetupAttachments method)
Update: v1.15.2, 28-Apr-2015
Fixed: vbMAPI_MailItem::CopyTo method was not preserving HTML status (causing an implicit plain text to HTML conversion for HTML messages)
Update: v1.15.1, 21-Jan-2015
Fixed: The attachment paperclip icon should no longer be displayed to recipients of messages with hidden embedded images from Outlook Signatures. (vbMAPI_OutlookSignature::SetupAttachments method)
Added: vbMAPI_Attachment::Flags read/write Long property
Update: v1.15.0, 03-Nov-2014
Added minimal support for importing EML / RFC822 / MIME files into an existing message, through using a new method: vbMAPI_MailItem::Import(FileName, Type), where Type must be ImportType_RFC822. This feature requires Outlook 2002 or newer to be installed (for IConverterSession support).
Update: v1.14.4, 23-Jul-2014
Fixed: vbMAPI_Session::OutlookSendReceiveAll was hanging due to an event problem introduced in v1.14.3
Update: v1.14.3, 26-Jun-2014
New: added a new event to the vbMAPI_Session object: OnModelessFormEvent(Command As String, Item As vbMAPI_MailItem). Only used when the Display method of the vbMAPI_MailItem object is called modelessly (first argument is False), and is currently only triggered by clicking the 'Send' button on the Outlook form. The command string parameter passed to the event is "BeforeSend" (giving us scope to add further commands to the same event at a future date).
Bugfix: fixed intermittent errors when iterating over large lists of vbMAPI objects (such as address lists, folder lists etc).
Update: v1.14.2, 26-Sep-2013
Fixed: Intermittent failure in the address book entries class that caused address list counts to be mis-reported as zero.
Update: v1.14.1, 03-Sep-2013
Fixed: memory corruption in calls to vbMAPI_MailItem::SetupAttachments in some circumstances.
Update: v1.14.0, 22-Aug-2013
Improved: The vbMAPI installer (for developers) and the developer-addin DLL are now digitally signed to prevent excessive warnings on installation
Fixed: PR_CONVERSATION_INDEX property is now always set on new outgoing mail
Update: v1.13.8, 17-Jul-2013
Fixed: internal handling of ansi zero length strings (that were being converted to NULL pointers, which Extended MAPI doesn't always accept)
Update: v1.13.7, 20-Feb-2013
Improved: vbMAPI_Signature::SetupAttachments method for better parsing of the HTML code
Fixed: Session.DeliverNow was unreliable, often throwing an exception. Now fixed.
Update: v1.13.4, 17-Dec-2012
Fixed: memory leak.
Update: v1.13.3, 10-Dec-2012
Added: vbMAPI_Attachment::DataAsByteArray property, for reading/writing the raw binary data of an attachment (similar to DataAsText, but for binary access)
Update: v1.13.2, 24-Sep-2012
Fixed: VBA addin installation for when VBA is run under elevated user permissions (e.g. 'Run as administrator'). Note: must run the addin installer under the same elevated user permissions (e.g. 'Run as administrator').
Update: v1.13.1, 07-Jul-2012
Improved: Installer for users where the AppData folder location changes due to roaming profiles
Update: v1.13.0, 17-Apr-2012
Improved: Re-written the installer for the developer addin so that non-admins can now install vbMAPI. Installation is now always per-user, with the addin DLL being installed in the %appdata% folder rather than the machines local program files folder.
Update: v1.12.0, 02-Apr-2012
Improved: VBA Addin Installer now correctly installs for each Windows user after being installed from a separate Windows admin account.
Update: v1.11.11, 29-Mar-2012
Fixed: Internal error when handling conversion of MAPI boolean types to COM boolean types.
Update: v1.11.10, 26-Mar-2012
Improved: signatures support on non-English systems.
Fixed: appointment cancellation (set meeting status, then call Send()).
Fixed: save sent folder for appointment updates (requests / cancellations)
Update: v1.11.8, 07-Dec-2011
Fixed: bug in vbMAPI_MailItem::Display call on pre-Outlook 2007 systems, causing some sent messages to be saved to the creation folder rather than moved to the sent items folder.
Update: v1.11.7, 05-Dec-2011
Improved the loader code for VB.NET and C#.
Update: v1.11.6, 05-Sep-2011
Fixed fallback support for extracting HTML from embedded RTF internally when a message object is generated using the vbMAPI_Session::GetMessageFromMsgFile method.
Fixed: Classic VB6 error handling support (broken since v1.11.0).
Update: v1.11.3, 15-Jul-2011
Fixed: Under certain conditions, vbMAPI_MailItem::Sent property was returning opposite boolean value of what you would expect
Fixed: Under certain conditions, vbMAPI_MailItem::Submitted property was returning opposite boolean value of what you would expect
Update: v1.11.2, 14-Jul-2011
Fixed: Issue in the loader code that was causing an extra 2MB of memory to be allocated unnecessarily (C# and VB.NET only)
Update: v1.11.1, 12-Jul-2011
Improved: vbMAPI_AddressBook::PAB is now read-write (was read-only), allowing you to change the address list designated as the personal address book
Improved: vbMAPI_AddressBook::DefaultAddressList is now read-write (was read-only), allowing you to change the address list designated as the default address list
Update: v1.11.0, 06-Jul-2011
fixed: memory leak (circular reference) in vbMAPI_Session:GetMessageFromMsgFile
added: vbMAPI_MailItem::CastToAppointmentItem
added: vbMAPI_MailItem::CastToContactItem
added: vbMAPI_AppointmentItem::CastToMailItem
added: vbMAPI_AppointmentItem::CastToContactItem
added: vbMAPI_ContactItem::CastToMailItem
added: vbMAPI_ContactItem::CastToAppointmentItem
fixed: crash due to new optimizations in the 64-bit VBA7 compiler as of Office 2010 SP1. (Only affects VBA7 64-bit). More info here.
removed: the 'Add vbMAPI to this project (Advanced Options)' menu item in the VBA and VB6 IDE, and moved that functionality over to the standard 'Add vbMAPI to this project' menu option instead.
Update: v1.10.9, 01-Jul-2011
Fixed: Internal handling of MAPI tables with bad/corrupt rows
Update: v1.10.8, 24-May-2011
Fixed: vbMAPI_MailItem::Display dialog will now use the correct Sent Items folder based on the selected send account when messages are sent.
Update: v1.10.7, 24-May-2011
Improved: vbMAPI_Account::DeliveryStore property now returns the default store if no specific store has been associated with the account (as such it can also be used with pre-Outlook 2007 too to simplify backwards compatibility when using this feature)
Added: vbMAPI_Account::DeliveryStore property for Outlook 2007+
Added: vbMAPI_Account::DeliveryStoreEntryID property for Outlook 2007+
Added: vbMAPI_Account::DeliveryFolderEntryID property for Outlook 2007+
Fixed: vbMAPI_MailItem::SendAccountName now works also when calling vbMAPI_MailItem::Dislplay rather than only working for vbMAPI_MailItem::Send
Update: v1.10.4, 28-Apr-2011
Fixed: reminder start-times are now set correctly for appointments.
Update: v1.10.3, 13-Apr-2011
Fixed: vbMAPI_OutlookSignature::SetupAttachments now handles paths containing URI encoded characters properly (spaces, accents, etc)
Update: v1.10.2, 17-Mar-2011
Fixed: Session.LogOnPSTStore would fail on the second attempt when using a secondary vbMAPI_Session, due to a bug in the caching of MAPI profile tables.
Added: vbMAPI_OutlookSignature::SetupAttachments method for embedding local images included in signatures (see EXAMPLE)
Update: v1.10.0, 02-Mar-2011
Improved: HTMLBody properties are now also fully supported in Outlook 2000/2002 editions (using internal conversion of HTML to embedded RTF format).
Added: Session.Option.ForceInternalConversionOfEmbeddedHTML boolean property (default: false) to force vbMAPI to use the internal converter instead of Outlook/Exchanges version
Update: v1.9.6, 26-Feb-2011
Improved: VBA loader code for increased stability
Update: v1.9.5, 23-Feb-2011
Fixed: date/time support within different time zones
Update: v1.9.4, 23-Feb-2011
Fixed: buffer overrun introduced in v1.9.3.
Update: v1.9.3, 22-Feb-2011
Fixed: localized date/time issue arising from earlier update
Update: v1.9.2, 22-Feb-2011
fixed: LogOnPSTStore when opening a password protected PST file
fixed: handling of MAPI date/times with regard to Daylight Saving Time settings
added: PR_OOF_STATE MAPI property tag
Update: v1.9.1, 10-Feb-2011
Refixed: passing Objects (such as Access form controls) to all IndexOrName type parameters
Update: v1.9.0, 10-Feb-2011
Improved: completely re-written the initial MAPI loading routine to take into account of situations where Outlook isn't the default client, and when the bitness of your compiled application doesn't match the bitness of Outlook.
Added: exception code E_MAPI_DLL_BITNESS &H8004222F - thrown when the bitness of your compiled application doesn't match the installed version of Outlook.
Update: v1.8.7, 09-Feb-2011
Improved: Support for appointments, and sending meeting requests from them (see code examples)
Improved: DeferredDeliveryTime property is now read/write
Improved: ported vbMAPI to the VCOM v3 engine offering stability and efficiency improvements
Improved: compiled code size reduction of 15% over previous builds
Improved: error descriptions throughout
Improved: vbMAPI_Store::RootFolder property now behaves better for public folders.
Improved: vbMAPI_Profiles::Add method no longer changes the default profile setting.
Improved: Profile Provider and Service UIDs now hex encoded
Fixed: vbMAPI_ContactItem and vbMAPIAppointmentItem bug causing crash if named property was accessed before any normal MAPI property.
Fixed: many fixes throughout for better Outlook 2000 support
Update: v1.6.4, 10-Nov-2010
Improved: support for running vbMAPI within a windows service application. vbMAPI will now detect if running as a service and will send the correct flags to the underlying MAPI calls.
Update: v1.6.3, 09-Nov-2010
New: vbMAPI_ContactItem class. You can cast directly from any vbMAPI_MailItem directly to a vbMAPI_ContactItem.
Update: v1.6.2, 07-Nov-2010
NEW: Support for the C# language (win forms and console). Similar to the VB.NET support, just import the included vbMAPI.cs file to your project. Documentation here
Improved: added the reference documentation inline to the VB.NET and C# interface descriptors.
Changed: vbMAPI_Attachment::DataAsText no longer takes a second parameter (the UnicodeConversion parameter). Instead, this alternative functionality has been split to a new property: DataAsTextAnsi.
Changed: Removed the optional parameter to the HTMLBody, Body and RTFBody properties for better C# support. The parameter had not been implemented yet anyway.
Update: v1.6.1, 06-Nov-2010
NEW: Support for the C# language (win forms and console). Similar to the VB.NET support, just import the included vbMAPI.cs file to your project. Documentation here
Improved: added the reference documentation inline to the VB.NET and C# interface descriptors.
Changed: vbMAPI_Attachment::DataAsText no longer takes a second parameter (the UnicodeConversion parameter). Instead, this alternative functionality has been split to a new property: DataAsTextAnsi.
Changed: Removed the optional parameter to the HTMLBody, Body and RTFBody properties for better C# support. The parameter had not been implemented yet anyway.
Update: v1.5.0, 27-Oct-2010
Important: vbMAPI_Recipient::Resolve now returns true/false rather than raising an exception
Added: vbMAPI_Addressbook class (use Session.Addressbook to access it)
Added: vbMAPI_AddressLists collection class (collection of vbMAPI_AddressList objects)
Added: vbMAPI_AddressList class
Added: vbMAPI_AddressEntries collection class (collection of vbMAPI_AddressEntry objects)
Added: vbMAPI_Recipients::ResolveAll
Added: vbMAPI_Recipients::Clear
Added: vbMAPI_Recipients::ShowAddressBook
Added: vbMAPI_Recipients::AddEx
Added: ability to copy Recipients between objects, using Item.Recipients = Item2.Recipients syntax
Added: vbMAPI_AddressEntry::Members property for accessing distribution-list members
Added: vbMAPI_AddressEntry::IsMemberOfDL property representing collection of distribution lists the user is a member of
Added: vbMAPI_AppointmentItem class. This class is interchangeable with the vbMAPI_MailItem class. You can cast directly between them (e.g. Set AppointmentItem = MailItem).
Added: Several vbMAPI_MailItem properties: BillingInformation, OutlookInternalVersion, OutlookVersion, HidePaperClip, Mileage, NoAging
Fixed: last build wasn't working with Outlook x64, now fixed.
Fixed: setting RTFBody caused an extra de-reference to the MAPI RTF stream = crash on some versions of Outlook
Update: v1.3, 29-Jul-2010
Added: Classes allowing administration of MAPI profiles, services and providers. (documentation to follow)
Added: vbMAPI_Session::LogonPSTStore method
Added: vbMAPI_Session::LogonExchangeMailbox method including EncryptConnection and IgnoreNoPF options
Added: VB6/VBA - a new "Advanced Options" menu option allowing deletion of class modules that you're not interested in (substituting late-bound Object type for those classes that you disable)
Improved: further improvements to error details reported if the message store fails to open
Improved: The VBA/VB6 Addin now closes the opened VBE codepanes for newly added modules.
Fixed: OutlookSendReceiveAll won't halt indefinitely if the send/receive abruptly fails.
Fixed: GetDefaultFolder() for folder types JunkMail, Conflicts, SyncIssues, LocalFailures, ServerFailures
Fixed: bug in late-bound IDispatch implementation that was failing for VB shortcuts where the default member has parameters (e.g. Session.Stores(0) was failing but Session.Stores.Item(0) was OK)
Update: v1.2.12, 22-Jul-2010
Improved: error reporting when opening of a message store fails.
Update: v1.2.11, 21-Jul-2010
Added: vbMAPI_Session::GetSharedMailBox
Added: vbMAPI_Session::GetSharedDefaultFolder
Improved: vbMAPI_Session::GetStoreFromID now accepts an optional parameter to control the MAPI open flags.
Update: v1.2.10, 20-Jul-2010
Added: vbMAPI_MailItem::SearchKey property
Added: vbMAPI_Folder::SearchKey property
Added: vbMAPI_Store::SearchKey property
Added: vbMAPI_MailItem::AbortSubmit method
Added: vbMAPI_Store::AbortSubmit method
Added: vbMAPI_MailItem::MarkRead method allowing suppression of read receipts
Fixed: vbMAPI_MailItem::Display minor memory leak
Update: v1.2.9, 17-Jul-2010
vbMAPI_Attachment::DataAsText property is now read/write.
Added vbMAPI_Attachments::AddBlank for help in creating attachments from variables rather than physical files. After using AddBlank, set the vbMAPI_Attachment::DataAsText property to a string to set the attachment data.
Update: v1.2.8, 16-Jul-2010
Fixed: Several bugs causing random exceptions being thrown from collection::Item() methods
Update: v1.2.7, 16-Jul-2010
Added: vbMAPI_OutlookSignature::FullHTML property to expose the full HTML including <HTML> and <HEAD> tags
Update: v1.2.6, 15-Jul-2010
Fixed: vbMAPI_MailItem::DeleteAfterSubmit property is now read/write.
Fixed: vbMAPI_MailItem::Importance property is now read/write.
Fixed: vbMAPI_MailItem::To_/CC/BCC properties now wont crash if you pass vbNullString
Fixed (VB6): Instancing property of modules now set to Private by default so that DLL compilation is possible.
Update: v1.2.5, 09-Jul-2010
New: vbMAPI_OutlookSignatures class (collection)
New: vbMAPI_OutlookSignature class offering easy retrieval of Outlook signatures in TXT, HTML and RTF formats
New: vbMAPI_Account::DefaultNewSignature property (returns a vbMAPI_OutlookSignature object). Outlook 2003+ only.
New: vbMAPI_Account::DefaultReplySignature property (returns a vbMAPI_OutlookSignature object). Outlook 2003+ only.