Autor Thema: Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript  (Gelesen 1512 mal)

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Hallo zusammen!

Ich bin ziemlich neu in der Notes Entwicklung, habe aber vorher jahrelang Java entwickelt.
Derzeit versuche ich einige Abläufe zu automatisieren.
Aktuell möchte ich gerne per Lotusscript eine Mail-In Datenbank erzeugen.
Ich konnte bisher nirgends ein "How-To" dazu finden, darum habe ich mich mal selbst auf die Suche begeben.
Mein erster Versuch sah schon ganz gut aus, aber die MailIn Datenbank konnte keine EMails empfangen (Code zum Schluß meines Posts).
Ein Vergleich mit einer manuell erzeugten MailInDB zeigte auch, dass einige Eigenschaften noch fehlten oder falsch von mir angegeben wurden.

Daher die Frage, ob es für die Erzeugung eines MailIn Dokumentes eventuell bestimmte Vorgehensweise zu beachten gibt oder ob mir jemand sagen kann, welche Eigenschaften ich noch angeben muss.

Vielen Dank im Voraus für eure Antworten!


Code
Private Sub MailinCreateDocument(mailinId As String, internetaddress As String) 
	Dim notesServer as NotesName
	Set notesServer = New NotesName("myServer/myOrg/DE")
	Dim db As New NotesDatabase( "", "" )
	Dim doc As NotesDocument
	Call db.Open( notesServer.Common, "names.nsf" )	

	Set doc = db.CreateDocument
	doc.Form = "Database"
	doc.Type = "Database"

	doc.FullName = mailinId + "/myOrg/DE"
	doc.Description = "Postkorb " + mailinId
	doc.MailFile = "mailin\" + mailinId + ".nsf"
	doc.MailServer = notesServer.abbreviated
	doc.MailDomain = "myOrg"
	doc.internetaddress = internetaddress
	doc.owner="PK_" + mailinId
	doc.LocalAdmin="Administrators"
	Call doc.Save( True, True )
End Sub
« Letzte Änderung: 21.06.23 - 12:57:51 von Andreas1977 »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #1 am: 21.06.23 - 12:02:19 »
internetaddress ist nicht initialisiert
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #2 am: 21.06.23 - 12:56:55 »
Danke für den Hinweis, ich habe den Code nicht ganz vollständig hineinkopiert.
mailInId und internetaddress werden als Parameter übergeben.
Ich korrigiere das mal im Post

Offline maxritti

  • Senior Mitglied
  • ****
  • Beiträge: 490
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #3 am: 21.06.23 - 13:50:22 »
Mein erster Versuch sah schon ganz gut aus, aber die MailIn Datenbank konnte keine EMails empfangen (Code zum Schluß meines Posts).
Was heisst denn "konnte keine EMails empfangen"?

Passiert beim Mailversand an die DB einfach nichts? Keine Fehlermeldung o.ä.?
Ggf auch einen Blick in die log.nsf des/der beteiligten Server riskieren.

Und herzlich willkommen bei der wilden Notesprogrammierung.  :)
« Letzte Änderung: 21.06.23 - 13:55:42 von maxritti »

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 672
  • Geschlecht: Männlich
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #4 am: 21.06.23 - 14:28:57 »
Moin,

was mir so auf die Schnelle auffällt:

Der Server und der Fullname werden so vermutlich nicht passen, die Form Server/Org wird nur zur vereinfachten Anzeige/Eingabe im Frontend genutzt aber technisch wird die kanonische Form im Backend verwendet.
Außerdem würde ich noch MessageStorage = "1" setzen.

Damit die Feldtypen passen und um eine Prüfung vorzunehmen empfehle ich vor dem Speichern ein doc.ComputeWithForm
Das sorgt bei der Gelegenheit automatisch für die kanonische Form bei den Namen, dann solltest du nicht mal am Code der Namensfelder was ändern müssen.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_COMPUTEWITHFORM_METHOD.html

Wenn die Zustellung dann nicht schnell genug klappt könnte ein Refresh der ($Users) View auch nicht schaden.

HTH
Carsten

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #5 am: 21.06.23 - 16:38:05 »
Mein erster Versuch sah schon ganz gut aus, aber die MailIn Datenbank konnte keine EMails empfangen (Code zum Schluß meines Posts).
Was heisst denn "konnte keine EMails empfangen"?

Passiert beim Mailversand an die DB einfach nichts? Keine Fehlermeldung o.ä.?
Ggf auch einen Blick in die log.nsf des/der beteiligten Server riskieren.

Und herzlich willkommen bei der wilden Notesprogrammierung.  :)

Sorry für die unpräzise Angabe.

Ich erhalte einen Zustellungsfehlerbericht
Als Grund erhalte ich die Meldung
Code
No route found to server myServer/myOrg from server myServer/myOrg.  Check Server and Connection documents in the Domino Directory.

"Wilde Notesprogrammierung" <- Den find ich gut  ;D

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #6 am: 21.06.23 - 16:43:06 »
Moin,

was mir so auf die Schnelle auffällt:

Der Server und der Fullname werden so vermutlich nicht passen, die Form Server/Org wird nur zur vereinfachten Anzeige/Eingabe im Frontend genutzt aber technisch wird die kanonische Form im Backend verwendet.
Außerdem würde ich noch MessageStorage = "1" setzen.

Damit die Feldtypen passen und um eine Prüfung vorzunehmen empfehle ich vor dem Speichern ein doc.ComputeWithForm
Das sorgt bei der Gelegenheit automatisch für die kanonische Form bei den Namen, dann solltest du nicht mal am Code der Namensfelder was ändern müssen.

https://help.hcltechsw.com/dom_designer/11.0.1/basic/H_COMPUTEWITHFORM_METHOD.html

Wenn die Zustellung dann nicht schnell genug klappt könnte ein Refresh der ($Users) View auch nicht schaden.

HTH
Carsten

Das sieht sehr vielversprechend aus, danke!
Ich habe mir mal die Unterschiede von einer programmatisch angelegten und einer manuellen MailIn DB angeschaut.
Dort sieht man, dass ich den Fullname kanonisch hätte angeben müssen, das war ein Volltreffer von dir. Und MessageStorage füge ich auch gleich mal dazu.
Ich habe hier noch ein paar, die ich gar nicht zuordnen kann:
  • $SrvM1
  • AvailableForDirSync
  • DocumentAccess

Ich spiele mit denen auch nochmal rum und melde mich später nochmal.
Auf jeden Fall schonmal vielen herzlichen Dank für die Hilfe

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #7 am: 21.06.23 - 16:53:27 »
Die Rollenzuordnung im Item DocumentAccess ist in der Tat wichtig. Aber nicht für das Funktionieren der Konfiguration, sondern nur dazu, wer das Dokument sehen/bearbeiten darf.

Die anderen beiden Items kannst Du getrost vergessen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #8 am: 21.06.23 - 20:11:59 »
Dein Ansatz ist schon gut. Für jemanden, der noch nichts mit LS zu tun hatte. Gucke Dir mal die Themen NotesSession, NotesName, NotesItem an.
Da finde Du Methoden, die es ermöglichen , Items innerhalb eines NotesDocuments als Reader, Author, Editor zu deklarieren. Das Ganze gibt es auch für Java.
Evtl. Schreibst Du dann deinen Code demnächst auch in Java. Respekt, dass es Dir gelungen ist, aus der Java Welt heraus in LS zu programmieren. Für viele „alte Hasen“ im Nites Umfeld ist  Java immer noch Teufelszeug.

Willkommen im Forum
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #9 am: 22.06.23 - 14:52:27 »
Dein Ansatz ist schon gut. Für jemanden, der noch nichts mit LS zu tun hatte. Gucke Dir mal die Themen NotesSession, NotesName, NotesItem an.
Da finde Du Methoden, die es ermöglichen , Items innerhalb eines NotesDocuments als Reader, Author, Editor zu deklarieren. Das Ganze gibt es auch für Java.
Evtl. Schreibst Du dann deinen Code demnächst auch in Java. Respekt, dass es Dir gelungen ist, aus der Java Welt heraus in LS zu programmieren. Für viele „alte Hasen“ im Nites Umfeld ist  Java immer noch Teufelszeug.

Willkommen im Forum

Vielen Dank!
Es ist interessant, dass man so manches mit Hilfe des Designers und dem darin enthaltenen Code herausbekommen kann.

Manche beibehaltene Namensgebungen machen es allerdings fast unmöglich, als LS-Einsteiger sich was selbst beizubringen.
ZB Wenn man versucht, unter "Vorgaben" einer Datenbank den Besitzer per Lotusscript zu verändern. Wäre ich nicht zufällig mal über einen Post in einem Forum gestolpert, wäre ich immer noch auf der Suche.
Das muss man einfach wissen, dass man da das CalenderProfile anpacken muss  :o

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #10 am: 22.06.23 - 21:06:58 »
Kurzes Feedback von mir. mit den beiden zusätzlichen Eigenschaften klappt das jetzt, ich kann erfolgreich eine Mail an den Postkorb schicken und dort abholen.
Hier der Code (Zeile 12 angepasst, Zeile 20 dazu)
Code
Private Sub MailinCreateDocument(mailinId As String, internetaddress As String) 
	Dim notesServer as NotesName
	Set notesServer = New NotesName("myServer/myOrg/DE")
	Dim db As New NotesDatabase( "", "" )
	Dim doc As NotesDocument
	Call db.Open( notesServer.Common, "names.nsf" )	
 
	Set doc = db.CreateDocument
	doc.Form = "Database"
	doc.Type = "Database"
 
	doc.FullName = mailInNotesName.Canonical
	doc.Description = "Postkorb " + mailinId
	doc.MailFile = "mailin\" + mailinId + ".nsf"
	doc.MailServer = notesServer.abbreviated
	doc.MailDomain = "myOrg"
	doc.internetaddress = internetaddress
	doc.owner="PK_" + mailinId
	doc.LocalAdmin="Administrators"
        doc.MessageStorage = 1
	Call doc.Save( True, True )
End Sub

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #11 am: 22.06.23 - 21:10:31 »
Die Rollenzuordnung im Item DocumentAccess ist in der Tat wichtig. Aber nicht für das Funktionieren der Konfiguration, sondern nur dazu, wer das Dokument sehen/bearbeiten darf.

In dem manuell erzeugten MailIn Dokument enthält DocumentAccess den Wert [NetModifier]

Daraus werde ich nicht schlau. Wie kann ich den Wert vorher/nachher sehen/editieren manuell/per lotusscript?
Ich kann den bisher nur hinterher per Dokumenteneigenschaften sehen, aber was bedeutet denn NetModifier?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #12 am: 23.06.23 - 06:44:18 »
NetModifier ist eine ROLLE. Rollen findest Du in der ACL (Zugriffskontrollliste der Datenbank) Rollen werden verwendet, um Personen, Gruppen, oder anderen Objekten Zugriff auf Dokumente ( und auch andere Objekte ) in einer Datenbank zu gewähren, ohne den Personen individuell die Berechtigung geben zu müssen.
Verhält sich wie die Berechtigungen einer Abteilung. Du wechselst z.B vom Einkauf in die IT. Der Admin löscht deine Rolle EINKAUF und gibt Dir die Rolle IT, Damit bekommst du ohne grossen Aufwand alle Berechtigungen, die Du für die Arbeit in der IT benötigst. Gleichzeitig werden die Die Berechtigungen des Einkaufs genommen.

In der names.nsf gibt es zahlreiche Rollen, die die Zugriffe steuern. Gucke mal in die ACL.

In der Maske für die MailInDatenbank gibt es ein Item (Feld) "DocumentAccess". Das ist vom Typ AUTHOR und Computed when composed. Der Vorgabewert wird in einer umfangreichen Formel ermittelt. Dabei wird der Wert anhand der Maske ermittelt,

Was die Namen bestimmter Werte angeht, hast Du das ja schon gut beschrieben. Historisch gewachsen halt.

Ein berechnetes Feld wird automatisch anhand der Vorgaben dem Dokument hinzugefügt, wenn es gespeichert wird.
Und da kommt jetzt bezogen auf Deinen Code die Methode ComputeWithForm der Klasse NotesDocument ins Spiel. (https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_COMPUTEWITHFORM_METHOD.html)

Wenn Du die vor dem Call doc.save ausführst, dann werden automatisch alle Felder entsprechend ihren Vorgaben gesetzt, auch wenn Du sie nicht explizit über Deinen Code hinzufügst.

 
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Andreas1977

  • Frischling
  • *
  • Beiträge: 8
Antw:Notes 11.0.1 - Mail-In Datenbank erstellen mit LotusScript
« Antwort #13 am: 23.06.23 - 08:54:18 »
Und da kommt jetzt bezogen auf Deinen Code die Methode ComputeWithForm der Klasse NotesDocument ins Spiel. (https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_COMPUTEWITHFORM_METHOD.html)

Wenn Du die vor dem Call doc.save ausführst, dann werden automatisch alle Felder entsprechend ihren Vorgaben gesetzt, auch wenn Du sie nicht explizit über Deinen Code hinzufügst.

Danke nochmal für den Hinweis!
CarstenH hatte das ja auch schon angemerkt.
Ich hatte mir die Dokumentation auch angeschaut, dachte aber das wäre nur zum Validieren.
Dass da auch Werte ergänzt werden, hatte ich überlesen.
Perfekt, dann ist die Funktion jetzt komplett.

Vielen Dank an eure tatkräftige Unterstützung, und ein schönes baldiges Wochenende an alle.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz