Autor Thema: Aktualisierung des Homemailservers über Mail-Tempate (POSTOPEN-Event)  (Gelesen 3364 mal)

Offline Sierra

  • Aktives Mitglied
  • ***
  • Beiträge: 186
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
Gruss, Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
??

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?

??


Offline Sierra

  • Aktives Mitglied
  • ***
  • Beiträge: 186
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.
Gruss, Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
... und nicht eine einzige Frage beantwortet ...

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
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.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
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
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
kein option declare.

wieder ein totes Kätzchen ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
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 ;)
« Letzte Änderung: 11.02.16 - 20:54:41 von Andrew Harder »
Andy

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
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.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Sierra

  • Aktives Mitglied
  • ***
  • Beiträge: 186
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.
Gruss, Michael

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz