Ensuring that Inbound Email actions always work, regardless of text case sensitivity


Ensuring that Inbound Email actions always work, regardless of text case sensitivity


Sometimes an Inbound Email action will not behave as expected, because the string comparisons it uses are case-sensitive, and the incoming email's text does not match upper- and lower-case characters exactly. There are two places where case-sensitive string comparisons are important:

  1. For early product families, Inbound Email Configuration properties that determine when an email should be treated as a Reply or a Forward.
  2. Custom scripts that you write, which contain case-sensitive string comparisons.


Procedure for Ensuring Inbound Email Configuration Matches Upper- and Lower-case

This procedure does not apply to:

  • Calgary Patch 6 and later
  • Dublin Patch 2 and later

In later releases, the reply and forward prefixes perform case-insensitive comparisons.

To ensure that the correct inbound action is triggered for emails classified as type Reply or Forward:

  1. Log in to your instance.
  2. Navigate to System Properties > Email.
  3. In the Inbound Mail Configuration section, verify that the Identify mail as a reply by these subject prefixes property contains a complete list of prefixes that identify that an email is a reply in your company's mail systems. Separate each prefix with a comma. See wiki article Inbound Mail Configuration for more information.
    1. Define multiple versions of the prefix, including mixed-case versions such as FWD:, Fwd:, etc. 
  4. Click Save.
  5. Repeat the procedure for the Identify mail as a forward by these subject prefixes property.


Procedure for Ensuring Your Custom Scripts Work with Case-Insensitive Text

If your Inbound Email action scripts contain Javascript patterns similar to the following, then it is best practice to review your code for possible case-sensitivity issues. An example of case-sensitive Javascript looks like this:

Bad practice, because indexOf() requires perfect case-sensitive comparison:

if (yourVariable.indexOf("Incident Opened") != -1) {
   // Do something important here, based on text "Incident Opened"
   // The problem is that "Incident Opened" will not match

Best practice:

if (yourVariable.toLowerCase().indexOf("incident opened") != -1) {
   // This will match "Incident Opened", "incident Opened", "Incident opened", etc.