| All functions | Legacy functions | About function names |
vuMailKit keeps a set of live runtime values in memory while the DLL is loaded. These values represent the current email configuration that send, receive, autodetect, and related functions use while your program is running.
This page explains the difference between:
There are always live runtime values in memory while vuMailKit is active.
Setter functions change those live runtime values immediately.
Examples include functions that set values such as:
If you change one of those values with a setter function, vuMailKit uses the new in-memory value right away for the current session.
vuMailKit can operate in two different configuration modes.
This is the old vuMail style behavior.
In this mode:
vuGlobalsLoad() and vuMailGetGlobals() load saved global valuesvuGlobalsSave() and vuMailSaveGlobals() save current global valuesThis mode is mainly relevant before a managed profile has ever been created.
This mode becomes the normal model once a managed profile exists.
In this mode:
This is the mode most developers and end users will be using after the setup wizard has successfully created and saved a profile.
Before a managed profile has been created, vuMailKit can still behave like the older vuMail product.
That means:
Legacy registry location:
HKCU\SOFTWARE\vuPrograms\vuMailThis exists for compatibility with older usage patterns and migration from the original vuMail model.
Once a managed profile has been created, vuMailKit switches to managed-profile-based persistence for normal operation.
At that point:
vuMail registry location is no longer the normal primary store for email settingsManaged profile data is stored under Local AppData, including locations such as:
%LOCALAPPDATA%\vuPrograms\vuMailKit\profiles%LOCALAPPDATA%\vuPrograms\vuMailKit\secrets%LOCALAPPDATA%\vuPrograms\vuMailKit\statevuMailKit may also keep active-profile bookkeeping under a vuMailKit registry node, but the old vuMail registry key is not the normal primary store once managed profiles are in use.
Yes.
That is important for legacy compatibility.
Even after a profile exists:
So setter functions remain valid. Their role is simply different once managed profiles are active.
Setter functions act like runtime changes to values that may later be saved through the legacy global save path.
Setter functions act like runtime changes to the currently active profile context.
If you save after making those changes, the active managed profile is updated.
Preferred functions:
vuGlobalsLoad()vuGlobalsSave()Legacy names still supported:
vuMailGetGlobals() is the legacy name for vuGlobalsLoad()vuMailSaveGlobals() is the legacy name for vuGlobalsSave()Before managed profiles exist:
After managed profiles exist:
That means the function names stay the same, but the persistence target changes once the product has moved into managed profile mode.
vuMailKit always uses the live runtime values that are currently in memory.
That means:
Some developers do not want passwords written to the registry in the old compatibility model.
Use:
vuNoPasswordInRegistry(1)When this is enabled, the SMTP password may be omitted from legacy registry persistence.
Note:
vuMail registry storage modelFor most new development using the setup wizard:
In that scenario, most developers do not need to manually set individual values unless they want to override something at runtime.
If you are using vuMailKit in a more manual or legacy-compatible way, a common pattern is:
Example (Clarion):
RC = vuGlobalsLoad()
RC = vuSmtpSetServer('smtp.example.com', 587)
RC = vuLogSetFile(CLIP(PATH()) & '\mail.log')
RC = vuNoPasswordInRegistry(1)
RC = vuGlobalsSave()
The easiest way to think about vuMailKit is this:
| All functions | Legacy functions | About function names |