Use Script Rule

Summary

Below, we provide additional information and examples about what can be achieved within a Script Rule.

Script Context

This table shows a subset of what is available, we host our own utility class javadoc, e.g. IJEMHVelocityContextUtils (jemh-api 4.1.33 API)

API

Notes

API

Notes

message.getBody()

Get body content of email. Not available for preprocessing task.

message.getSubject()

Gets the Subject content of email.

message.getAllHeaders()

Get all headers of a message.

message.getHeader(name)

Get value of a message header

Parameters

  • name the name of the header to get

message.setHeader(key, value)

Set the value of a message header

Parameters

  • key (String) the name of the header to set

  • value (String) the value of the header to set

print(str)

Adds output that is recorded during execution and shown in the processing report.

Parameters

  • str (String) the string to be recorded

setOutcome(outcome, reason)

Set the processing outcome of the script

Parameters

  • outcome (String) the outcome type

  • reason (String) the reason for the outcome

Note: outcome must be written in all capitals. Valid outcomes are (IGNORE, FORWARD, DROP)

resultMap

Field processor and Script Rule only. Map - JavaScript | MDN

Note: resultMap requires Directive field processor support. See Field Processors | Enabling a field processor for use

RegExp

Searches within string values for matching content.RegExp - JavaScript | MDN

setMatch(true)

This is used to define that the script rule is a match. This will result in that Rule and Project being used to process the email.

Examples

Match a keyword in the email body using a regular expression

This script uses a Regular Expression to match a specific word within the body. If found then it will match on this rule and will add the value to a specific Custom Field.

Example Script:

var pattern = new RegExp("example:\\s([0-9]+)").exec(message.getBody()); if (pattern !== null) { print("Matched Value: " + pattern[1]); resultMap.set("example", pattern[1]); setMatch(true); }

Example Test Case:

MIME-Version: 1.0 Received: by 10.223.112.12 with HTTP; Sat, 18 Jun 2011 22:42:26 -0700 (PDT) Date: Sun, 19 Jun 2011 17:42:26 +1200 Subject: This is the email subject From: ryan@thepluginpeople.com To: test@test.com Content-Type: text/plain; charset=UTF-8 This is an example email example: 100

Processing Report:

Here you can see the example mail processing report generated by JEMHC for this Test Case. Within the report it states that the script rule was matched and that a value was matched and has applied this value to the example Custom Field.

Match if the email is sent from a specific sender

This script gathers the from header and then checks if the sender address matches and if so then the rule will be set as a match.

Example

var senderAddress = message.getHeader('from'); if (senderAddress == "ryan@thepluginpeople.com") { setMatch(true); }

Test Case

Processing Report