Autoresponder - wie die internen Benutzer rausfiltern?

  • Hallo,


    ich habe einen Agenten, der für eine bestimmte DB bei Maileingang automatisch eine Antwort verschickt:



    Jetzt fehlt mir noch eine if-Schleife o.ä. um an unsere internen Benutzer diese Mail nicht zu verschicken. Ich weiß allerdings nicht mit welchem Ausdruck ich das in einer if-Schleife hinbekomme.


    Danke für Tipps :)

  • Dann schau nach dem Absender und versuche den eindeutig nach intern oder extern zu bestimmen. Entweder die Organisation oder aehnliches

  • Gut, ich kenne aber trotzdem noch nicht die Verhaltensweise der if-Schleife, die Hilfe gibt mir da auch keine Antwort.
    Ich habe also direkt nach der For-Schleife jetzt eine Abfrage eingefügt:


    If (doc.From(0) = ACME) Then


    und habe dazu noch Fragen:


    Erstmal will ich ja das Gegenteil, ich will also nicht, dass er den Teil nach Then ausführt wenn ACME Teil des From-Feldes ist, sondern wenn es nicht Teil des Feldes ist. Habe aber nicht gefunden wie man der Schleife das mitteilt, ein != hat z.B. nicht funktioniert.


    Zum zweiten ist ACME ja nur ein Teil des Feldinhaltes, dort steht ja noch mehr, auf mich umgemünzt z.B. realsic/ACME. Man müsste also durch Platzhalter etc. klarmachen, dass hier nur ein Teil des Feldes ausgewertet werden soll.


    Ich steh im Wald.

  • Hallo,




    1) "not" (auf englisch), alternativ mit "else" arbeiten
    2)InStr ( [ begin , ] string1 , string2 [, compMethod ] )


    ungefähr



    Sub Initialize

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim mailDoc As NotesDocument
    Dim body As NotesRichTextItem
    Dim i As Integer

    Set db = session.CurrentDatabase
    Set collection = db.UnprocessedDocuments


    set doc = collection.getfirstdocument


    while not doc is noting


    if instr(doc.from(0),"ACME",1)=0 then


    For i = 1 To collection.Count
    Set doc = collection.GetNthDocument(i)
    Set mailDoc = db.CreateDocument
    Set body = maildoc.CreateRichTextItem("Body")
    mailDoc.Form = "Memo"
    mailDoc.SendTo = doc.From(0)
    mailDoc.Subject = "Re: " & doc.Subject(0)
    Call body.AppendText( "Hallo,")
    Call body.AddNewLine(2, False)
    Call body.AppendText( "irgend ein Text")
    Call mailDoc.Send(False)
    Call session.updateprocesseddoc(doc)
    Next


    else
    go weiter:
    endif


    weiter:
    loop
    End Sub



    HTH,
    Michael

  • hmm, irgendwie kann den gestrigen beitrag nicht mehr ändern....


    hat noch einige fehler im skript...




    Sub Initialize


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim mailDoc As NotesDocument
    Dim body As NotesRichTextItem
    Dim i As Integer


    Set db = session.CurrentDatabase
    Set collection = db.UnprocessedDocuments


    set doc = collection.getfirstdocument


    while not doc is nothing


    if instr(doc.from(0),"ACME",1)=0 then


    Set mailDoc = db.CreateDocument
    Set body = maildoc.CreateRichTextItem("Body")
    mailDoc.Form = "Memo"
    mailDoc.SendTo = doc.From(0)
    mailDoc.Subject = "Re: " & doc.Subject(0)
    Call body.AppendText( "Hallo,")
    Call body.AddNewLine(2, False)
    Call body.AppendText( "irgend ein Text")
    Call mailDoc.Send(False)
    Call session.updateprocesseddoc(doc)


    endif


    set doc = collection.getnextdocument(doc)


    loop


    End Sub


    HTH,
    Michael

    • Offizieller Beitrag
    Zitat

    Habe aber nicht gefunden wie man der Schleife das mitteilt, ein != hat z.B. nicht funktioniert.


    dafür wird <> verwendet.


    Zitat

    Zum zweiten ist ACME ja nur ein Teil des Feldinhaltes, dort steht ja noch mehr, auf mich umgemünzt z.B. realsic/ACME. Man müsste also durch Platzhalter etc. klarmachen, dass hier nur ein Teil des Feldes ausgewertet werden soll.


    Ich frage immer auf einen Punkt "." im Namen ab. Alles was einen Punkt im Namen hat kommt von extern, solange ihr keine Punkte im Namen, der Zulassungsstelle oder Domäne verwendet und bei uns sind an diesen Stellen keine Sonderzeichen erlaubt.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hi,


    danke für deine Mühen Michael, du hast mich auf jeden Fall weitergebracht. :) Die if-Schleife gab mir den nötigen Hinweis (instr). Insgesamt habe ich es aber anders umgesetzt und bin bei der For-Schleife geblieben. Sollte aber afaik keine Nachteile haben.


    Danke für den Tipp mit dem Punkt Dirk. Das mit der Organisation wäre zwar gegangen, aber halt nicht so optimal gewesen, der Name besteht nämlich aus nur 3 Buchstaben, so wären mit Sicherheit einige false positives enstanden. Aber das mit dem Punkt ist genial :)


    So, für Menschen mit gleichem Problem hier mal das komplette Skript:



    Gruß,
    André

  • Deine For-Schleife hat allerdings den Nachteil dass sie nicht wirklich performant ist, da bei jedem Durchgang die Dokumente vom ersten ab durchgegangen wird, bis das n-te erreicht ist.


    Die While-Schleife ist da viel besser

    • Offizieller Beitrag

    mit dem Punkt kannst du noch andere Sachen machen.


    Stelle in der Mail-DB unter Werkzeuge - Vorgaben - Mail - Farben im letzten Feld den Punkt ein und alle Mails aus dem Web werden in dieser Farbe markiert.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein