nicht nachvollziehbares Phänomen mit 8.5.1 FP2

  • Also ich bin inzwischen am verzweifeln und habe nun auch keine Idee mehr woran es liegen könnte. Kurze Problembeschreibung: Ich habe in einer MailInDatenbank einen Agenten, der eingehende E-Mails verarbeitet und in so genannte Supportcalls wandelt. Hierzu liest er einige Felder aus der Originalmail aus und kopiert diese in eine neue erstellten Supportcalls hinein. Das klappt alles wunderbar und bis zum Server 7 gab es auch nie Probleme. Jetzt habe ich allerdings einen 8.5.1 FP2 im Einsatz und es ergibt sich folgendes Problem. Bei dem rüberkopieren des Body-Feldes aus der E-Mail in den Supportcall kommt es zwar nicht zu einem Fehler, das Rich Text-Feld im Supportcall (SC_Langbeschreibung) bleibt allerdings leer bzw. es steht lediglich die Zeile "Callinhalt:" drin und ich weiß nicht weshalb. Folgenden Code habe ich verwendet:


    Dim scquelle As Variant
    Dim scziel As Variant
    Set scquelle = doc.GetFirstItem( "Body" ) 'doc ist Originalmail
    Set scziel = newcall.CreateRichTextItem( "SC_Langbeschreibung" )
    Call scziel.AppendText("Callinhalt:")
    Call scziel.AddNewLine( 1 )


    'hier soll nun der Mailinhalt eingefügt werden
    If ( scquelle.Type = RICHTEXT ) Then
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call scziel.AppendRTItem( item )
    End If
    End Forall
    End if


    Call scziel.Compact


    und nun das absolute Phänomen: wenn ich diesen Agenten im Frontend manuell starte funktioniert es tadellos und der Inhalt des Body-Feldes aus der Originalmail wird übertragen. Startet der Agent nun allerdings selbst periodisch durch den Server bleibt das Feld bis auf den Einführungsstring "Callinhalt:" leer. Das ist mir ein absolutes Rätsel. Auf dem 7er Servern funktioniert es problemlos, auch periodisch.


    Hat vielleicht irgendeiner einen Gedankenansatz wo das Problem liegen könnte? Mir qualmt inzwischen die Birne. ich habe inzwischen irgendwie das Gefühl dass AppendRTItem vom Server nicht richtig verarbeitet wird oder ich irgendetwas übersehe.

  • Wie lautet denn die exakte Fehlermeldung an der Stelle?

    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

  • das ist ja das Problem. Es gibt keinerlei Fehlermeldung, weder in der Protokolldatei des Servers noch sonst irgendwo. Als Fehlerabfang- Routine habe ich


    ErrorHandler:
    Print "Maileingänge, Prozedur: 'Hauptcall', Fehler in Zeile: " & Erl & " (Error" & Str(Err) & ": " & Error$ & ")"
    Resume Next

  • Heißt in dem Zieldokument das Item auch "Body"? Weil, ich hatte mal -frag mich bitte nicht in welcher Version- das Problem, dass die Items den selben Namen haben mussten, weils sonst nicht tat.

    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

  • Also persönlich halte ich dein Script für etwas mehr als seltsam.


    Du machst da irgendwie mehrere Sachen doppelt.


    Wieso holst du dir erst das Body Item um es danach dann über eine Schleife über alle Items erneut zu holen und zu kopieren ?


    Außerdem könnte das ganze auch schieflaufen wenn das erste Body Item eben kein RichTextItem ist, d.h. die Prüfung solltest du wohl besser in die Schleife bauen und nicht davor.


    Ohne die eingehenden Mails zu kennen wird dir vermutlich keiner sagen können woran es liegt.
    Hast du denn schon mal eine davon analysiert ?

  • Nun wird die ganze Sache noch verrückter. Inzwischen ist es mir gelungen auf einer weiteren Server-Umgebung das Ganze zum laufen zu bringen. Ohne besonderes zutun. Der Server versioniert ebenfalls mit 8.5.1 FP2. Aber dieser Server verarbeitet die Maileingänge völlig unproblematisch und die Felder werden so übertragen wie es früher auf den 7er Servern auch der Fall war.


    Dies lässt mich nun vermuten, das es unter Umständen eine Frage der Konfiguration des Servers ist, dass die Body-Felder nicht verarbeitet werden. Kann das sein?

  • ich habe die Deklarationen nun schon mehrfach geändert. Ich hatte im Original


    Dim scquelle As NotesItem
    Dim scziel As NotesRichTextItem


    scquelle kann ja nicht NotesRichTextItem sein, da ich dies vorher ja gar nicht weiß. oder wie oder was ???


    das Verhalten, egal wie ich deklariere ist immer identisch. Das Zielfeld bleibt schlicht leer. Zwischenzeitlich hatte ich es sogar mal mit der Funktion


    Call scquelle.CopyItemToDocument( newcall, "SC_Langbeschreibung" )


    versucht. Auch dies funktionierte nicht bei Verarbeitung durch den Server. Habe ich den Agenten wiederum von Hand gestartet, klappt es wunderbar. somit kann ich schon mal ausschließen dass das Problem mit AppendRTItem zu tun hat. ich werde das Gefühl nicht los dass der Server das Quellfeld (scquelle), also das Body-Feld aus der E-Mail, aus welchem Grund auch immer nicht verarbeiten kann.

  • Spricht du von incoming SMTP-Mails? Dann kann es gut sein, dass das erste Item namens "Body" kein RTItem ist, sondern ein MIME Part.

    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

  • Wenn es MIME ist ja.
    Wenn sie aber nur Text sind nicht.


    Wie ich schon sagte, du solltest diese doppelten Prüfungen auf das gleiche erst mal aus deinem Script rausmachen und das mal sauber aufbauen

  • eigentlich sind dort keine doppelten Überprüfungen drin. Ich überprüfe am Anfang nur ob es sich um Rich Text handelt und falls nicht, behandele ich den Inhalt des Feldes als normalen Text. Der vollständige Abschnitt des Skriptes sieht so aus:


    bodytest ist NotesItem
    newcallbody ist RTItem


    If ( bodytest.Type = RICHTEXT ) Then
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call newcallbody.AppendRTItem( item )
    End If
    End Forall

    Else

    'wenn Body kein RT dann nur das Textfeld kopieren
    Forall item In doc.Items
    If item.Name = "Body" Then
    Call newcallbody.AppendText( doc.GetItemValue( item.name )(0) )
    End If
    End Forall

    'Kontrolle ob Anhänge dran sind
    If doc.HasEmbedded Then
    Const Macro = | @AttachmentNames |
    ergebnis = Evaluate(Macro, doc)
    Dim sFileNames As String

    'Falls ja, dann diese nach TEMP lösen und von dort in den neuen Call ins Feld Anhänge
    Forall x In ergebnis
    Set object = doc.GetAttachment( x )
    sFileNames = Environ("Temp") & "\" & object.Source
    Call object.ExtractFile(sFileNames)
    Set obj = newcallattach.EmbedObject(EMBED_ATTACHMENT, "", sFileNames, "Anhang")
    Kill sFileNames
    End Forall
    End If

    End If

  • vollkommen richtig. Diese Situation hatte ich bisher allerdings nicht. Ist für die Klärung dieses Problem aber offensichtlich auch nicht relevant, da ich in der Originalmail über die Feldeigenschaften vor der Mail-Verarbeitung überprüft habe ob es sich um ein RichText-Feld handelt. Dies ist bei meinem Testmails definitiv der Fall, zumindest zeigen die Feldeigenschaften Rich Text an. Insofern muss das ursächliche Problem also woanders liegen.

  • Bist du dir da wirklich sicher ?


    Je nach Serveinstellung kann da schon irgendeine automatische Konvertierung stattfinden.


    Von dem her würde ich erst mal das Script sauber aufbauen bevor du dich auf die Suche nach einem fehler machst, der sich dadurch vielleicht erledigt

  • Ich würde mir mal eher die Serverkonfiguration ansehen. Der OP sagt ja selbst, dass an einem anderen Server es einwandfrei tut. Mal eben bei mir versucht nachzustellen: tut auch.


    Na klar ist das Skript nur eine halbgare Lösung, die zu viele Besonderheiten unberücksichtigt lässt. Das Grundproblem scheint mir aber dennoch die Config zu sein. Und wenn es nicht wirklich wichtige Gründe dafür gibt, das sder Server so konfiguriert ist, iwe er augenblicklich ist, sollte eher das grade gezogen werden, anstatt 90% des Skript aus Ausnahmebehandlungen und Error Handling bestehen zu lassen.

    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

  • Das auf jeden Fall auch.


    Und von Sonderbehandlungen einbauen rede ich ja gar nicht, sondern eben diese halbgaren bereits existierenden Sonderbehandlung rauszunehmen bzw wenn schon dann sauber einzubauen