Email filters conditions

shalini44
Tera Expert

Hi,

We have set up email filters and ignore emails if it comes from certain users which we consider as spam and put them in the junk folder. For this purpose we have setup the conditions using the condition builder. As per the wikis Email Filters - ServiceNow Wiki the value entered in conditions is case-sensitive.

We've started getting many spams where, for example, the domain ends with 'ASIA'   and several variations of it with a mix of upper/lower case letters. So,   we get 'ASIa', 'asIA', 'asiA' etc. How can I ignore the case in the conditions.

Thanks,
Shalini

1 ACCEPTED SOLUTION

andyh_
Giga Contributor

It should, though I am not positive about the field name of the Sender email address (I guessed origemail because that is what it is in other Email Scripts) but also, in these condition scripts, you don't return the answer but set the magic variable "answer" to whether or not you want to allow the email past your filter.



Additionally, you'll probably want to add to this list in the future, so you should write for that eventuality now, as opposed to later.



Try this:



// add to this list as necessary


var filters = [


  /asia$/i


];



var answer = true; // allow email


// this field could be different


var field_to_check = email.origemail;



for (var i = 0; i < filters.length; i++) {


  if (filters[i].match(field_to_check)) {


      // we hit a filter, mark the answer as FALSE


      // to disallow this email from going past


      answer = false;


  }


}



Best of luck,


Andy


View solution in original post

7 REPLIES 7

andyh_
Giga Contributor

In order to have a more flexible filter, you will probably need to add custom script that returns true or false based on some regex.



For your ASIA domain example:



var re = /asia$/i; // matches 'asia' at the end of string, case insensitive


return !re.match(email.origemail); // return false if email address matches


Thanks for your reply, Andrew!



If i put the code for regex like below, it should work?


filter.PNG


andyh_
Giga Contributor

It should, though I am not positive about the field name of the Sender email address (I guessed origemail because that is what it is in other Email Scripts) but also, in these condition scripts, you don't return the answer but set the magic variable "answer" to whether or not you want to allow the email past your filter.



Additionally, you'll probably want to add to this list in the future, so you should write for that eventuality now, as opposed to later.



Try this:



// add to this list as necessary


var filters = [


  /asia$/i


];



var answer = true; // allow email


// this field could be different


var field_to_check = email.origemail;



for (var i = 0; i < filters.length; i++) {


  if (filters[i].match(field_to_check)) {


      // we hit a filter, mark the answer as FALSE


      // to disallow this email from going past


      answer = false;


  }


}



Best of luck,


Andy


That's a great solution! I will try it.


We started getting lot of spams lately and it would great to add them in an array and block.



Thanks!


Shalini