Das Notes Forum

Domino 9 und frühere Versionen => ND8: Administration & Userprobleme => Thema gestartet von: Sierra am 11.02.16 - 14:47:09

Titel: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: Sierra am 11.02.16 - 14:47:09
Hallo,

ich habe mal wieder ein Notes-Problem. Ich habe eine Script, was nach dem Starten den Homemailserver des Benutzers aus dem names.nsf ziehen soll und dann diesen in der Arbeitsumgebung setzten muss.

Dies soll nicht per Click auf eine Schaltfläche passieren, sondern mit PostOpen Event, aber nur einmal für die aktuelle Notes-Session:

Dies ist das Script, was per Clickt funktioniert:

Code
Declarations 
Const cMailServer="IhrMailserver" 
Const cMailDomain="IhreNotesDomäne"
Const cCatalogServer="" 
Const cDirectoryServer="" 
Const cNameView="Locations" 
Const cSubject="Arbeitsumgebungen aktualisiert" 
Const cAdminMail="IhrName@IhreDomain.de" 
Dim ses As NotesSession 
Dim pad As NotesDatabase 
Dim db As notesdatabase 
Dim ploc As NotesView 
Dim pdoc As NotesDocument 
Dim mdoc As NotesDocument 
Dim rtf As NotesRichTextItem 
Dim nrloc As Integer 
Dim ddb As NotesDatabase 
Dim persDoc As NotesDocument 
Dim persView As NotesView 
Dim mailfile As String 

Click 
Sub Click(Source As Button) 
        Set ses = New NotesSession 
        Set db = ses.currentdatabase 
        Set pad = ses.getdatabase("","names.nsf")
        If pad Is Nothing Then 
                Msgbox "Kann lokales Adressbuch nicht finden." 
                Exit Sub 
        End If 
         
        Set ddb = ses.getDatabase(cMailServer,"names.nsf") 
        If ddb Is Nothing Then 
                Msgbox "Kann Adressbuch von Server "+cMailServer+" nicht finden" 
                Exit Sub 
        End If 
        If Not ddb.isopen Then 
                Msgbox "Kann Adressbuch von Server "+cMailServer+" nicht öffnen" 
                Exit Sub 
        End If 
        Set persView = ddb.getView("($Users)") 
        If persView Is Nothing Then 
                Msgbox "Kann View ($Users) im Verzeichnis auf Server "+cMailServer+" nicht finden" 
                Exit Sub 
        End If 
        Set persDoc = persView.Getdocumentbykey(ses.Effectiveusername, True) 
        If persDoc Is Nothing Then 
                Msgbox "Kann Personendokument für "+ses.Effectiveusername+" nicht finden" 
                Exit Sub 
        End If 
        mailfile = persdoc.mailfile(0) 
        Set ploc = pad.getView(cNameView) 
        If ploc Is Nothing Then 
                Msgbox "Kann Ansicht "+cNameView +" in lokalem Adressbuch nicht finden." 
                Exit Sub 
        End If 
        nrloc = 0 
        Set mdoc = db.createDocument 
        Set rtf = mdoc.createRichTextItem("Body")         
        Set pdoc = ploc.getFirstDocument 
        While Not pdoc Is Nothing 
                Print pdoc.name(0) 
                pdoc.MailServer = cMailServer
                pdoc.Domain = cMailDomain 
                pdoc.CatalogServer = cCatalogServer 
                pdoc.DirectoryServer = cDirectoryServer 
                pdoc.MailFile = mailfile 
                'eventuell ein recalc 
                'Call pdoc.Computewithform(true,false) 
                Call pdoc.save(True,False) 
                Call rtf.appendText(pdoc.Name(0)) 
                Call rtf.addnewLine(1) 
                nrloc = nrloc + 1 
                Set pdoc = ploc.Getnextdocument(pdoc) 
        Wend 
        Call rtf.appendText("Mailfile: "+mailfile) 
        Call rtf.addnewLine(1) 
        mdoc.Subject = cSubject+" "+ses.Commonusername+" ("+Cstr(nrloc)+")" 
        mdoc.SendTo = cAdminMail 
        mdoc.form = "Memo" 
        Call mdoc.send(False) 
        Msgbox Cstr(nrloc) +" Arbeitsumgebungen wurden geändert und die Administration per Mail benachrichtigt." 
End Sub 

Ich habe Click, Sub und Endsub weggeschnitten und in das PostOpen oberhalb von EndSub kopiert. Aber leider sagt er an unserschiedlichen Stellen, es wäre ein Fehler drin.


Gruss,
Micha
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: koehlerbv am 11.02.16 - 14:59:32
??

PostOpen von was? Im Mailtemplate sind sehr viele davon!
Fehler? Welche? Wo konkret?
Was konkret wurde kopiert? Welche Code steht jetzt im ominösen PostOpen Event?

??

Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: Sierra am 11.02.16 - 15:43:40
Gibt es vielleicht einen besseren Ort?

Eingentlich soll das Script beim Starten des Notes-Clients oder auch bei der ersten Aktion  in Mailfile ausgeführt werden, damit in der Arbeitsumgebung der Homemailserver neu gesetzt wird. Wir haben Tests diesbzgl. gemacht und bei uns funktioniert der Automatismus nicht. Lt. Dienstleister kommt dies in gewachsenen Umgebungen häufiger vor.
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: koehlerbv am 11.02.16 - 16:01:43
... und nicht eine einzige Frage beantwortet ...
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: ronka am 11.02.16 - 16:03:31
Um es nur einmal am Tag auszuführen, und damit mehrfach anlaufen zu verhindern brauchst du mehr information zu schreiben, dazu ist der Notes.ini als speicherplatz durchaus sinnvoll.
Dann sollte demnach Kontrolliert werden ob dieses bereits geschrieben würde, und wenn ja, die aktion einfach direkt beenden.

Dazu, wenn es fehler gibt, wäre es sinnvoll diese auch zu melden, und dessen text hier im forum anzugeben.. dann kann auch geholfen werden.

Aktuell sieht dieses script für mich danach aus das er im LOKALEN Names nachsieht, und dort wird es sicherlich keine user einträge finden.
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: rambrand am 11.02.16 - 16:46:14
Ich nehme an, Du willst das im PostOpen des Datenbankscripts laufen lassen?

@ronka: er sucht schon im Server Names dort sucht er nach dem Mailfile, im lokalen sucht er dann nur die vorhandenen Arbeitsumgebungen.
Als Flag für die einmalige Abarbeitung wäre das Tagesdatum in einer Notes.ini Variable sicher eine Lösung.

Beim Start des Notes Clients würde meines Wissens nach gehen, wenn ihr eine Startdatenbank definiert habt, die beim Starten des Notes Clients automatisch startet. Dann müsste der Code da rein.

Um weiterhelfen zu können, solltest Du die Fragen von Bernhard beherzigen und wirklich mal die genauen Stellen benennen, an denen es knallt und die entsprechende Fehlermeldung. Es hat nicht jeder die Zeit Deinen Code in eine Testdatenbank einzubauen und dann zu debuggen.

Bye
Markus
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: eknori am 11.02.16 - 18:22:35
kein option declare.

wieder ein totes Kätzchen ...
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: Andrew Harder am 11.02.16 - 20:47:47
Zwei, oder findet da jemand ErrorHandling?


Lass den Kram in einer eigenen Sub laufen, welche Du im Postopen mit Call aufrufst.
Wenn es dann noch Probleme gibt, sag wo und was.
Anderst gehts nicht, scheinhbar sind gerade alle vom Lieferengpass der Glaskugeln betroffen.

Nimm Dir bitte auch die gegeben Tipps für das tägliche Mail zu Herzen.
Es soll ja User geben, die so ein Mailfile besonders gerne öffnen, wenn da Mails mit verschickt werden.
Mit Tools wie z. B. Autoit gerne auch 30.000 mal am Tag ;)
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: eknori am 12.02.16 - 09:19:12
Zitat
Lass den Kram in einer eigenen Sub laufen, welche Du im Postopen mit Call aufrufst.

Besser: erstelle eine eigene Scriptlib und referenziere von wo auch immer der Code darin aufgerufen werden soll. Dann mache einen Call zu der Routine.
Titel: Re: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)
Beitrag von: Sierra am 16.02.16 - 17:16:46
Vielen Dank für Eure Antworten. Ihr habt Recht, das ich Euch zu wenig Infos gegeben habe.
Mittlerweile habe ich das Script als Postopen-Event eingebunden.