Utilities: List Settings: For Programmers: Email Scripting

 

Enable Scripting

This setting determines how merging and scripts are handled in the body of the message. The settings are:

 

Administrators Only

When this is set, only administrators are allowed to use scripts or mail merge tags delimited by %% symbols. For anybody else, they will pass through and not be interpreted.

 

Any Member

When this is set, any member of a list can post scripts or mail merge tags delimited by %% symbols. If the list is set to allow non-members to post, then they will have the same capabilities as a member in this regard.

 

Disable

Nobody can post scripts or mail merge tags delimited by %% symbols. Scripts or tags in list headers or footers will still be evaluated.

 

Note that there is also a server wide Scripting Feature Level which regulates what kinds of scripting and mail merge are available here, unless the level has been set higher for this particular list by the server administrator in the Server scripting limit override setting, available on this tab.

 

For example, if Scripting Level is set to No Scripting/Merge, administrators would not be able to do full scripting, even if this setting was Administrators Only unless the server administrator enabled full scripting for this particular list.

 

Scripting Level

This setting determines what level of scripting will be available for the selected list.

 

The options are:

 

No Advanced Scripting

Disables all advanced scripting. Merging based on the standard ListManager tables is allowed; user-defined fields are not. This is the default setting for discussion lists.

 

Safe Scripting/Merge

Allows only 'safe' advanced scripting. File system, SQL and other potentially harmful access is not allowed. Safe scripting is always permitted for "hello" messages so that tags that notify users about the need for a password (i.e., %%url.resetpassword_mri%% and %%url.resetpassword%%) function properly.

 

Full Scripting/Merge

Allows the complete Tcl Interpreter, including file system, SQL, and other access. Important: if you allow full scripting/merge, we recommend that the list be configured to moderate all incoming messages. Otherwise, certain Tcl procedures such as "redirect" could be misused. See ListManager Tcl Procedures for more information about the "redirect" command. This is the default for announcement and email marketing lists.

 

Safe and Full Scripting/Merge are only available if you are running ListManager Pro or Enterprise.

 

The level of scripting you select should be determined by the type of list you're using, and who is likely to post to it. For example, discussion lists are unlikely to need the advanced scripting features, so scripting should be disabled with this setting (the default for these lists). Even the 'safe' level would likely be unnecessary for this type of list. Note that the server Scripting Feature Level overrides the list level if the setting here is more restrictive than the setting for the list.

 

Server scripting limit override

Allows the server administrator to override the server scripting feature level on a list by list basis. This setting is only visible to server administrators. By default, it is set to Don't override config server setting. The server administrator may change the setting per list to No Advanced Scripting, Safe Scripting/Merge or Full Scripting/Merge.

 

Initialization Script

If specified, the script that will be called when a Tcl interpreter is created for a mailing.

 

These scripts are useful for setting up proxy settings for httpget or setting global variables.

 

These scripts are called in the order Server, Site, and List when a Tcl interpreter is created for a mailing. If no interpreter is required for the mailing, these scripts will not be run.

 

If your message requires these scripts to be run and you are not using TclMerge in your message (i.e., no Tcl scripting is used in your message), you may add the following to your message to cause the interpreter to be instantiated.

 

%%init ; return "%%

 

To set a proxy server, the following lines may be added:

 

package require http 2.3
http::config -proxyhost yourproxyhostname -proxyport yourproxyportnumber