Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: HartiMcFly am 07.08.06 - 11:56:56

Titel: Spam Filter
Beitrag von: HartiMcFly am 07.08.06 - 11:56:56
Hallo,

ich habe einen Agenten, der mir "Spam Mails" in einen seperaten Ordner verschiebt. Es läuft soweit alles einwandfrei. Leider bekomme ich von einer Person Mails, die ebenfalls im Spam landen, dieses aber nicht dürfen.

Kann ich in meinem Script irgendwo eine Ausnahme für eine Mail Adresse einbauen. Quasi soll diese Mail Adresse dann nicht von dem Agenten angefast werden.

Ich hoffe ihr könnt mir helfen.
Hier mal mein Code.

Danke Patrick

Sub Initialize
   Dim Sitzung As New NotesSession
   Dim Inhaltsliste As Variant
   Dim Inhalte List As String
   Dim mail As NotesDocument
   Dim datenbank As NotesDatabase
   
   Set Sitzung = New NotesSession
   Set mail = Sitzung.DocumentContext
   Set datenbank = Sitzung.CurrentDatabase
   
   If mail.hasitem("X_Spam_Status") Then
      Inhaltsliste = Evaluate({@explode(@ReplaceSubstring("}&mail.X_Spam_Status(0) & {"; " "; " ") ;" ")})
      
      Forall param In Inhaltsliste
         Inhalte (Strleft(param, "=")) = Strright(param, "=")
      End Forall
      
      If Val(Inhalte ("score")) >= 4.8 Then
         Call datenbank.EnableFolder("Spam")
         Call mail.PutInFolder( "Spam" )
         Call mail.RemoveFromFolder("($Inbox)")
      End If
      
   End If
End Sub
Titel: Re: Spam Filter
Beitrag von: Thomas Schulte am 07.08.06 - 12:25:13
Du setzt an der falschen Stelle an.

Da ist das Kind ja schon in den Brunnen gefallen. Ich würde bei der Spam Erkennungs SW nachschauen, warum die den Score für diese Person auf über 4.8 setzt.

Grundsätzlich kannst du natürlich noch eine Klammer außenrum machen und
if mail.From(0) <> "Benutzername"
mit einbauen aber das wird je mehr Ausnahmen du machen willst um so aufwändiger. Wenn schon dann solltest du dir da eine Liste mit einbauen und auf ist nicht in Liste enthalten abfragen. Dann kann man das wenigstens erweitern.
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 07.08.06 - 12:27:58
Hallo Thomas,

kannst du mir dass bitte einmal mit beispiel@test.de in meinen Code ein bauen?
Ich sehe zur Zeit den Wald vor lauter Bäumen nicht mehr.

Danke Patrick

Titel: Re: Spam Filter
Beitrag von: Thomas Schulte am 07.08.06 - 13:02:22
Sei mir nicht böse aber das müsstest du eigentlich alleine hinbringen.

Schließlich hast du den Befehl ja schon und musst ihn nur noch an der richtigen Stelle einbauen. Und die sollte mit etwas logischer Überlegung ganz einfach zu finden sein.
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 09.08.06 - 07:10:32
Hallo Thomas,

ich habe es jetzt folgendermaßen eingebaut, leider zeigt es so keine Wirkung. Kannst du nocheinmal drüber schauen?

Danke Patrick

Sub Initialize
   Dim Sitzung As New NotesSession
   Dim Inhaltsliste As Variant
   Dim Inhalte List As String
   Dim mail As NotesDocument
   Dim datenbank As NotesDatabase
   
   Set Sitzung = New NotesSession
   Set mail = Sitzung.DocumentContext
   Set datenbank = Sitzung.CurrentDatabase
   
   If mail.from(0) <> "Beispiel@test.com" Then
      
      If mail.hasitem("X_Spam_Status") Then
         Inhaltsliste = Evaluate({@explode(@ReplaceSubstring("}&mail.X_Spam_Status(0) & {"; " "; " ") ;" ")})
         
         Forall param In Inhaltsliste
            Inhalte (Strleft(param, "=")) = Strright(param, "=")
         End Forall
         
         If Val(Inhalte ("score")) >= 4.8 Then
            Call datenbank.EnableFolder("Spam")
            Call mail.PutInFolder( "Spam" )
            Call mail.RemoveFromFolder("($Inbox)")
         End If
      End If
   End If
   
End Sub
Titel: Re: Spam Filter
Beitrag von: Thomas Schulte am 11.08.06 - 08:41:36
Schau dir mail mit dem Eigenschafts Fenster die Adten die im From Feld der Mail stehen genauer an. Die Prüfung gegen <> prüft nur ob exakt dieser Wert drinsteht.
Mittlerweile steht meistens aber noch irgendwas anderes drin wie zum Beispiel:
Thisismyname <myname@irgendwo.de>
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 11.08.06 - 12:16:07
Also muß es quasi so aussehen?

If mail.from(0) <> "thisismyname <Beispiel@test.com>" Then

so Richtig??

Danke Patrick
Titel: Re: Spam Filter
Beitrag von: koehlerbv am 11.08.06 - 12:22:10
Nein - Du musst nach einem Teilstring suchen:

If Instr (docMail.From (0), "beispiel@test.com") > 0 then ....

Bernhard
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 11.08.06 - 12:31:56
Danke Patrick

Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 14.08.06 - 07:12:04
Nachdem ich die Suche nach einem Teilstring eingebaut habe, sieht es so aus.

Sub Initialize
   Dim Sitzung As New NotesSession
   Dim Inhaltsliste As Variant
   Dim Inhalte List As String
   Dim mail As NotesDocument
   Dim datenbank As NotesDatabase
   
   Set Sitzung = New NotesSession
   Set mail = Sitzung.DocumentContext
   Set datenbank = Sitzung.CurrentDatabase
   
   If Instr (docMail.From (0), "Beispiel@Beispiel.de") >0  Then
      
      If mail.hasitem("X_Spam_Status") Then
         Inhaltsliste = Evaluate({@explode(@ReplaceSubstring("}&mail.X_Spam_Status(0) & {"; " "; " ") ;" ")})
         
         Forall param In Inhaltsliste
            Inhalte (Strleft(param, "=")) = Strright(param, "=")
         End Forall
         
         If Val(Inhalte ("score")) >= 4.8 Then
            Call datenbank.EnableFolder("Spam")
            Call mail.PutInFolder( "Spam" )
            Call mail.RemoveFromFolder("($Inbox)")
         End If
      End If
   End If
   
End Sub


Nun Filtert er gar nichts mehr heraus, heißt also die Spam Mails landen wieder ganz normal im Eingang.

Könnt ihr bitte nochmals drüber schauen?

Danke
Titel: Re: Spam Filter
Beitrag von: koehlerbv am 14.08.06 - 09:00:59
Jetzt werden ja auch nur noch die Mails von "Beispiel@beispiel.com" in die Prüfung einbezogen ...
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 14.08.06 - 09:39:58
Hallo,

es ist doch aber genau der Befehl, den du mir 2 Antworten weiter oben genannt hast, oder bin ich jetzt ganz blind?

Kannst du mir bitte sagen wie es richtig lauten müßte?

Wäre echt nett. Danke
Titel: Re: Spam Filter
Beitrag von: klaussal am 14.08.06 - 09:42:50
Zitat
kannst du mir dass bitte einmal mit beispiel@test.de in meinen Code ein bauen?

Bernhard hat nur gemacht, was DU gewollt hast...
Titel: Re: Spam Filter
Beitrag von: koehlerbv am 14.08.06 - 09:44:56
Die Instr-Funktion ist in der DesignerHelp ausreichend dokumentiert. Und mit der Logik musst Du wirklich allein klar kommen, sonst hat das keinen Zweck.

Bernhard
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 14.08.06 - 10:44:28
Ich finde den Fehler nicht wirklich, kannst du mir noch etwas mehr auf die Sprünge helfen??
Ich weiß, ich bin schon nervig

Patrick
Titel: Re: Spam Filter
Beitrag von: Axel am 14.08.06 - 11:44:10
Ich habe den Thread nur kurz überflogen, aber wenn ich dich richtig verstehe, willst du eine bestimmte Adresse von der "Spam-Bearbeitung" ausschließen.


Dann müsste das so aussehen:

If Instr (docMail.From (0), "Beispiel@Beispiel.de") = 0  Then

  'Hier wird weiter geprüft.

End If

Axel
Titel: Re: Spam Filter
Beitrag von: klaussal am 14.08.06 - 11:56:13
Zitat
Condition        Return value
string1 is the empty string ("")   0

Müsste doch > 0 heissen....
Titel: Re: Spam Filter
Beitrag von: koehlerbv am 14.08.06 - 12:01:27
Nein. Ist die Mailadresse enthalten, wird dann ja in den nachfolgenden Zweig geleitet, und ist sie nicht enthalten, wird überhaupt nichts weiter gemacht.

Bernhard
Titel: Re: Spam Filter
Beitrag von: Thomas Schulte am 14.08.06 - 12:01:51
Nein Klaus das ist falsch. Dieser Befehl liefert 0 als Wert zurück, bzw den Begin Wert wenn string2 leer ist. Was bei NULL Werten passiert ist in diesem Fall ein besonderes Kapitel.

Aber insgesamt ist das wieder so ein Fall von Herr vergib ihnen denn sie wissen nicht was sie tun.

Und ein klassisches Beispiel dafür, das es eben nichts nützt jemanden mit Code zu versorgen wenn grundlegende Mechanismen der Programmierung nicht verstanden worden sind.

Patrick, natürlich filtert er jetzt gar nichts mehr. Schließlich hast du ihm gesagt, das er nur noch dann auf den Filter überpüfen soll, wenn er deinen String in docMail.From findet. > 0 bedeutet, das es einen String gibt. Wie Axel schon gesagt hat muss man gegen = 0 prüfen, um das in der Form wie du es vorhast zu machen. Allerdings ist das etwas wo du mit lesen der Online Hilfe und einem Minimum an logischer Überlegung von selber hättest draufkommen können (müssen).
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 14.08.06 - 12:04:35
Trotzdem allerbesten Dank für Eure Hilfe.

Gibt es vernünftige Internetseite wo man sich in Lotus Script einlesen kann?
Oder etwa Tutorials?

Danke Patrick
Titel: Re: Spam Filter
Beitrag von: Axel am 14.08.06 - 12:15:23
Eine Internetseite kenne ich nicht. Aber was mir spontan einfällt wäre z.B. das hier:

Lotus Notes Domino R5 für Windows - LotusScript
 (http://www.herdt4you.de/commerceportal/item_detail.asp?ItemNo=1000294)
Domino Designer R5 (http://www.cul.de/domino5.html)


Axel
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 14.08.06 - 13:35:28
Ich habe es jetzt folgendermaßen drin stehen.

If Instr (docMail.From (0), "Beispiel@Beispiel.de") = 0  Then

durch diese Formel, wird aber meine eigentliche Abfrage umgangen.
Die Spam Mails, die normalerweise in dem Ordner Spam verschoben worden wären, landen jetzt wieder ganz normal im Eingang. Obwohl ich nun das Gleichheitszeichen benutze.

Ihrgendwie will dass nicht so ganz wie ich dass gerne hätte :-(


Titel: Re: Spam Filter
Beitrag von: Thomas Schulte am 14.08.06 - 13:40:54
Schalt den Debugger an und schau dir diese Zeile und alle verwendeten Parameter unter dem Mikroskop an. Wenn er da nicht mehr reingeht bedeutet das er findet immer einen Wert für Instr.
Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 31.10.06 - 07:24:29
Morgen zusammen,

ich hatte jetzt länger keine Zeit mehr mich um dieses Problem zu kümmern.
Trotzdem hätte ich noch eine Frage dazu.

Ich habe dieses Lotus Script ja in einem Agenten stehen.
Kann es sein, dass die Filterung nicht durchgeführt wird, weil die Einstellung " Vor Eingang neuer Mail" gesetzt ist?

Kann Notes mit dieser Einstellung überhaupt schon auf die passenden Felder zugreifen?

Ich habe auch schon versucht es zu ändern auf "Nach Eingang neuer Mail" aber dann läuft leider gar nichts mehr ( auch ohne die Filterung ). Muß ich an meinem Code etwas ändern bei dem Wechsel dieser Einstellung?

Danke Patrick

Titel: Re: Spam Filter
Beitrag von: HartiMcFly am 31.10.06 - 12:28:30
Hallo nochmal....

Ich habe es selber gelöst, mußte einfach vorher mit If mail.HasItem nachschauen ob das From, bzw. dass SMTPOriginator in der Mail vorhanden ist.

Trotzdem Danke

Patrick