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. http://ppl-docs.s3-website-us-east-1.amazonaws.com/JEMH/4.1.33/com/javahollic/jira/emh/api/IJEMHVelocityContextUtils.html

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. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

RegExp

Searches within string values for matching content.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

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

Match if a specific header exists in the email

This script will gather a specific header and if it contains a specific value then the rule will be set as a match.

Example

Test Case

Processing Report

Note regarding retrieving specific headers:

message.getHeader can be used to retrieve certain header values. For example, if you wish to check the From header, use message.getHeader('from')

 

Reject mail using script rule

To reject using script rule, you can define setOutcome, specifying the outcome and reason for the outcome.

Current available outcomes are: IGNORE , DROP, and FORWARD

Example

 

Setting Custom Field Values via Script

As with the Script Field Processor, the Script Rule also makes use of the resultMap object to allow Custom Field Values to be updated. Values are added to the Result Map in the Script rule which will Overwrite any values already present in the resultMap.

Example