docs

All functions Legacy functions About function names

About global memory

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:

The important idea

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.

Two operating modes

vuMailKit can operate in two different configuration modes.

1. Legacy compatibility mode

This is the old vuMail style behavior.

In this mode:

This mode is mainly relevant before a managed profile has ever been created.

2. Managed profile mode

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.

What happens before any profile exists

Before a managed profile has been created, vuMailKit can still behave like the older vuMail product.

That means:

Legacy registry location:

This exists for compatibility with older usage patterns and migration from the original vuMail model.

What changes after a profile is created

Once a managed profile has been created, vuMailKit switches to managed-profile-based persistence for normal operation.

At that point:

Managed profile data is stored under Local AppData, including locations such as:

vuMailKit 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.

Do setter functions still matter after profiles exist

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.

In legacy compatibility mode

Setter functions act like runtime changes to values that may later be saved through the legacy global save path.

In managed profile mode

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.

Loading and saving globals

Preferred functions:

Legacy names still supported:

What these do before profiles exist

Before managed profiles exist:

What these do after 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.

Immediate runtime behavior

vuMailKit always uses the live runtime values that are currently in memory.

That means:

Preventing password storage in the legacy model

Some developers do not want passwords written to the registry in the old compatibility model.

Use:

When this is enabled, the SMTP password may be omitted from legacy registry persistence.

Note:

Typical usage pattern today

For 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.

Typical legacy-style pattern

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()

Summary

The easiest way to think about vuMailKit is this:

All functions Legacy functions About function names