NonSpam-Worte

Top  Previous  Next

Beispielsprojekte > Reine Text-Parser > NonSpam-Worte

 

Das im folgenden beschriebene Projekt Nonspamwords.ttp eignet sich gut dazu einen ersten Test der Funktion des IMP-Filters nach der erstmaligen Installation durchzuführen. Er sollte dazu mit hoher Priorität aufgerufen werden.

 

Es gibt eine Menge Spamihilator-Filter, die dazu dienen, Spam aus den empfangenen E-Mails herauszufiltern. Demgegenüber verfolgt das Projekt Nonspamwords.ttp eine positive Strategie. E-Mails, die bestimmte Schlüsselworte enthalten, sollen als Nicht-Spam vor der folgenden negativen Filterung geschützt werden. Solche Schlüsselworte können der eigene Name oder Firmenname sein, oder auch eigene Produktbezeichnungen oder Begriffe zu eignen besonderen Interessengebieten.

 

 

{{

int iResult = 0;

}}

SKIP?

(  

   (

        "Spamihilator"

      | "TextTransformer"

      | "tetra"

   )  {{ iResult = 1; }}

   SKIP?

)?

{{

out << iResult;

}} 

 

Hier wird das Resultat nicht direkt in die Ausgabe geschrieben, sondern in der Variablen iResultat zwischengespeichert. Erst zum Schluss wird der Wert mit der Anweisung "out << iResultat" ausgegeben. Bei der Deklaration (Erzeugung) den Variablen mit "int iResultat = 0" wird ihr gleich der für Indifferenz stehende Wert 0 zugewiesen. Dieser Wert wird nur geändert, wenn die äußere Klammer (...)? durchlaufen wird. Das Fragezeichen '?' bedeutet - wie bei den regulären Ausdrücken - dass der Ausdruck vor dem Fragezeichen optional ist. Optional ist das Vorkommen eines der Worte, die durch das oder-Zeichen '|'  voneinander getrennt sind.

 

   (

        "Spamihilator"

      | "TextTransformer"

      | "tetra"

   )  {{ iResult = 1; }}

   SKIP?

 

 

Wenn eines der Worte im Text gefunden wird, wird der für Nicht-Spam stehende Wert 1 der Variablen iResult zugewiesen. Dann wird der wahrscheinlich nachfolgende Textabschnitt mit dem zweiten SKIP bis zum Ende übersprungen. Wenn keines der Nonspam-Worte im Text vorkommt, wird mit dem ersten SKIP der gesamte Text erkannt.

 

Um mehr mögliche Schreibweisen der NonSpamwörter abzudecken, wurde im TextTransformer in den Projektoptionen die Groß-/Kleinschreibung abgeschaltet.

 

TTCaseInsensitive_ge

 

Durch zwei kleine Modifikationen, könnte dieses Projekt mit dem Emptymail-Projekt kombiniert werden:

 

{{

int iResult = 0;

}}

(

    SKIP

    (  

   (

        "Spamihilator"

      | "TextTransformer"

      | "tetra"

   )  {{ iResult = 1; }}      

    )?

  | {{ iResult = -1; }}  

)

{{

out << iResult;

}}  

 

 

In der "leere" Alternative "| {{ iResult = -1; }}" wird nur eine Aktion ausgeführt, aber es wird kein Text konsumiert. Sie macht den umgebenden Klammerausdruck auch ohne '?' optional.