AddToFolder nur bei bestimmtem Absender

  • Hallo zusammen,


    folgende Formel macht eigentl. genau das was es soll, nur:

    Es werden nicht nur die Mails von "Hans Dampf" in den Testordner verschoben, sondern jede Mail, egal welcher Absender.


    Was mache ich falsch?


    SELECT Form = "Memo";

    @If (From = "Hans Dampf");

    @AddToFolder ("Testordner"; "($Inbox)");

    @MailSend ("Test3 Test3"; ""; ""; Subject; "Neuer Maileingang."

    + @NewLine +

    "Bitte klicken Sie auf die Verknüpfung um das Dokument zu öffnen."; "";

    [IncludeDoclink])


    Wäre nett wenn ihr mir helfen würdet.

  • Hab´s gerade nochmal nach [IncludeDoclink]); mit ""; versucht, funktioniert aber auch nicht:


    @If (From = "Hans Dampf");

    @AddToFolder ("Testordner"; "($Inbox)");

    @MailSend ("Test3 Test3"; ""; ""; Subject; "Neuer Maileingang."

    + @NewLine +

    "Bitte klicken Sie auf die Verknüpfung um das Dokument zu öffnen."; "";

    [IncludeDoclink]); "";

  • Moin,


    es ist ein ganz normaler Agent in einer Mai-In-DB.


    Wenn der Absender "Hans Dampf" ist, soll er die Mail aus dem Maileingang löschen und in den "Testordner" verschieben

    und anschließend eine Mail mit Link an den User "Test3" senden.


    Funktioniert auch alles super, nur daß auch Mails von andern Absendern ebenfalls in den "Testordner" verschobenen, und aus dem

    Maileingang gelöscht werden.


    Siggi

  • Na ja, natürlich nicht im Produktivbetrieb :)

    Hintergrund:

    Wir werden zukünftig auf diese Mail-In-DB von einem Kunden mit immer dem selben Absender Mails bekommen,

    die dann eben in den "Testordner" verschoben und aus dem Maileingang gelöscht werden sollen.... aber eben nur bei diesem Absender.

    Es kommen auch noch Mails von andern Absendern in diese Mail-in-DB.

    Die sollen aber auch im Maileingang bleiben.

  • Also deine Formel hat syntaktisch schon ein generelles Problem:

    Und zwar beendest du deine If Bedingung und führst ausserhalb der If Bedingung erst deine Aktionen aus.

    D.h. sie wird daher natürlich immer ausgeführt.


    Aus dem Gedächtnis müsste deine Formel so aussehen:


    Code
    @If (From = "Hans Dampf";
        @Do(
            @AddToFolder ("Testordner"; "($Inbox)");
            @MailSend ("Test3 Test3"; ""; ""; Subject; "Neuer Maileingang."+ @NewLine +"Bitte klicken Sie auf die Verknüpfung um das Dokument zu öffnen."; ""; [IncludeDoclink])
        );
    "")
  • Zudem hat der Agent noch ein logisches Problem, siehe Hilfe:

    Zitat

    If the agent trigger is "After new mail has arrives," then a few minutes can pass between the time the agent gets triggered to run and the time the agent actually runs. In this time, the database in question may have received multiple messages. Therefore, use the UnprocessedDocuments property of the NotesDatabase class (for LotusScript) or the getUnprocessedDocuments property of the AgentContext class (for Java) to process the collection of documents that have not been processed by the agent yet.


    The key point is that "Before new mail arrives" agents process one document at a time, and "After new mail has arrived" agents can process multiple documents delivered between the time the agent is scheduled to when it runs.


    Weiters sollte der Agent Signer auch passen.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • So funktioniert´s leider gar nicht mehr :(

    Die Mail bleibt einfach im Maileingang und sonst passiert nichts mehr....

  • Zitat

    Die Mail bleibt einfach im Maileingang und sonst passiert nichts mehr....

    Was sagt das Agent Log dazu? Dass "nichts" passiert, bezweifle ich. Ist das Logging eingeschaltet, sieht man darin zumindest, an welcher Stelle und mglw. auch warum der AMgr abbricht.


    Im verlinkten Hilfedokument ist auch die Rede von LotusScript, nicht von Formelsprache. LS bietet ein paar Größenordnungen mehr Möglichkeiten zum Debuggen und zum anderen eben auch die Property "UnprocessedDocuments", die in diesem Kontext nicht ganz unerheblich ist.


    Warum willst du überhaupt einen Mechanismus nachbauen, der seit Version 4 existiert und sauber tut? Versucht man das Rad neu zu erfinden, besteht die Gefahr, dass man es hinterher doch nur eckig anstatt runder als rund gemacht hat => q.e.d.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hi,

    Dann ich auch noch mal.

    Die Formal, die taurec hier geposted hat, ist auch die, die ich vorgeschlagen hätten.
    Zumal die ja 2 Aktionen ausführen willst, wenn deine Bedingung stimmt, dann muss da das @Do um
    diese beiden Aktionen.

    Und die Aktionen werden halt auch nu dann ausgeführt, wenn tatsächlich NUR "Hans Dampf" im Form-Feld enthalten ist.
    Wenn da z.B. "Hans Dampf1" steht, wird diese schonnicht mehr ausgeführt.

    Da du auch noch schreibts, dass es sich später einmal um Kundenmails handelt, die so bearbeitet werden sollen, dann liegt für mich die
    Vermutung nahe, dass es sich um "externe Mails" handeln wird.

    Und nun schau dir bitte einmal den Inhalt des betreffenden Feldes bei einer solchen Mail an.

    Ich schätze du wirst dann sofort feststellen, dass deine Abfrage, so wir sie aktuell formuliert ist, nie erfüllt werden kann.
    (nicht auf den aktuell verwendeten Namen festlegen, es könnte bei deiner Bedingung auch nach "Hans Meier" oder "Donald Duck" gesucht werden)



    Andreas

  • ascabg: er sagte ja, im Produktivbetrieb steht da nicht "Hans Dampf" drin. Gehen wir mal davon aus, dass der Code hier im Forum also zwecks Anonymisierung so geschrieben wurde.


    Das grundsätzliche Problem bei "Nach Eingang neuer Mail" ist halt, dass der AMgr nicht sofort loslegt, sondern dass es eine Verzögerung geben kann. Diese Verzögerung kann im Test so aussehen, als würde "nichts" passieren.


    Wie dem auch sei: unterm Strich beinhaltet das Gesamtkonstrukt so viele logische Fehler, dass es sinniger wäre, es komplett zu überdenken, anstatt noch mehr Zeit und Energie da reinzuversenken.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hi,

    RockWilder
    Dies ist mir durchaus bewusst.

    Nur wie willst du es anders "umschreiben", dass er sich einmal genau ansehen soll, was in dem Feld enthalten ist?
    Das da nicht "Hans Dampf" stehen wird ist schon klar.

    Es ging mir hier ja auch nur ums Prinzip.
    Er vergleicht nunmal auf einen ganz speziellen String.
    Und wenn dies nicht der Fall ist, dann mach der Agent auch nichts.

    Und da reicht es prinzipiell schon aus, wenn da "hans dampf" steht.


    Andreas

  • So weit, so klar. Da sind wir uns ja auch einig.;)


    Da ich den Produktivcode nicht kenne, gehe ich in meinem jugendlichen Leichtsinn einfach mal davon aus, dass im wahren Leben "hans.dampf@dom.tld" oder was in der Richtung drin stehen wird.

    Oder sowas wie @Contains(From; "hans.dampf").

    Oder auch @Like(From; "hans.dampf@dom.tld").

    Oder man verwendet eben doch eine Regel (dort ist im Übrigen eine funktionierende Syntax einsehbar, nur mal so am Rande).

    Oder man verwendet stattdessen LotusScript.

    Oder man verwendet die Teammailbox, die absenderabhängige Replies rausschicken kann. Schade nur, dass das Projekt offenbar nicht weiter gepflegt wird. Allerdings kann man diese spezielle Funktionalität ins default Mailtemplate backporten.


    Es geht wohl nur um einen speziellen Absender, da kann man theoretisch den Namen hart reinkodieren. Obwohl gefühlt ein Profildokument zwecks späterer Erweiterbarkeit vermutlich die flexiblere Option wäre (wie es in der Teammailbox auch getan wird).:/


    /Nachtrag:

    Nur um noch eine Option zu nennen: server mail rules. Ist zwar ziemlich das Selbe, wie mail rules im Mailfile, aber nur der Vollständigkeit halber und um die Liste weiter aufzublähen, wie man das Problem gelöst bekommt :D


    Der Möglichkeiten gibt es viele, aber ich komme grad vom Hölzchen aufs Stöckchen und sprenge den Scope der AnfrageX/

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

    Einmal editiert, zuletzt von RockWilder ()

  • Hi,

    Also ich habe den Agenten bei mir in meiner Mailbox einmal "nachgebaut".
    (Code ist anonymisiert)


    Code
    @If(@Contains(@LowerCase(@Name([Abbreviate]; From)); "hans.dampf");
        @Do(@AddToFolder("Agenttest"; "($Inbox)");
        @MailSend("Test3 Test3"; ""; ""; "Weiterleitung => " + @Trim(Subject); ""; ""; [IncludeDoclink])
        );
    "");


    Und dieser Code funktioniert so wie es geplant und erwartet ist.


    Andreas

  • Du solltest auf ein solches email mal einen @Prompt([ok];"From";@text(From) ) laufen lassen, es kann gut sein das dein From feld einen anderen inhalt hat als du denkst das es hat.