Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: gfunkus am 06.10.04 - 11:59:03
-
Hi, hat wer ne Idee wie ich über VB ne Mail verschicken kann ohne den Client zu öffnen? Hab da nen Code für VB der allerdings nur läuft wenn der Client gestartet ist. Hat wer Ideen? Biespiel ? Links? Tips?
Danke !
-
in www.redbooks.ibm.com nach "com together" suchen.
Damit kannst du dich von VB aus direkt mit einer Notes Datenbank auf dem Server verbinden, benötigst also keinen Client.
-
Ist es denn zwanghaft notwendig den NotesClient gestartet zu haben um die COM Schnittstelle zu nutzen?
Habe in dem redbook 3 Arten der Authentifizierung gefunden.
Aber selbst wenn sie funktionieren würden, würde er den Notesclient öffnen... das würde ich gerne verhindern über eine Connection im Hintergrund...
-
Habs länger nicht mehr gemacht.
Wenn mich nicht absolut alles täuscht, muss Notes installiert aber nicht unbedingt gestartet sein.
Aus einer Windows-Umgebung ist das die einfachste Option.
Du authentifizierst gegen den Server und es funktioniert.
Der Notes Client wird über diese com calls nicht geöffnet.
Gruß Axel
-
Meiner Erfahrung nach wird bei com der Client immer im Hintergrund gestartet,
Ohne Client-Start geht es AFAIK nur mit der C-API. Keine Ahnung ob und wie man die auch mit VB nutzen kann.
-
Also mit dem Code hier passiert es aber... er startet den Client. Was mache ich falsch? Kann wer helfen?
Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
'Next line only works with 5.x and above. Replace password with your password
' Session.Initialize ("passwort")
'Call Session.InitializeUsingNotesUserName("", "passwort")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string or using above password you can use other mailboxes.
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.ISOPEN = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = Recipient
MailDoc.Subject = Subject
MailDoc.Body = BodyText
MailDoc.SAVEMESSAGEONSEND = SaveIt
'Set up the embedded object and attachment and attach it
If Attachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.SEND 0, Recipient
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub
-
@gfunkus.
Das verunsichert mich jetzt etwas.
Versuch bitte mal eine ganz einfache Funktion.
(ein doc in einer Testdatenbank abspeichern).
Ich bin mir nach wie vor sehr sicher, dass da kein Client gestartet wird.
Mit Java kann man ja auch auf Notes zugreifen, ohne dass der Client gestartet wird.
Mit 6.5 gibt es ausserdem noch Webservices als zusätzliche remote Technologie.
Gruß Axel
-
Ab derm Set Session fängt der Rechner schon an den Notesclient zu starten.
Evtl. habe ich die Domino Objects nicht richtig referenziert???
Habe in meinem Projekt unter Verweise die domobj.tbl eingebunden... muss ich unter globals evtl nochwas angeben???
Ich habe probleme in der Zeile:
Session.Initialize ("password")
da bekomme ich ne Fehlermeldung. Das das object unterstützt Eigenschaft oder Methode nicht????
-
Du kannst prinzipiell kein Passwort für eine Notes-ID übergeben.
Bernhard
-
Ohne Authentifizierung also ohne Client, kann ich dann wahrscheinlich auch keinen Connect aufbauen sprich ohne aktiven Notes Client kann es njicht laufen ... oder???
-
@gfunkus,
um mittels VB und DOM eine Mail zu generieren, benötigst Du
einen Lotus Notes Client. Er braucht aber nicht gestartet zu sein.
Du benötigst ihn deshalb, um eine Session zu erstellen
also hierfür:
Set LNSession = New NotesSession
Call LNSession.Initialize(strPassword)
Um das Passwort zu prüfen, muß die ID Datei für das Programm errreichbar sein ( der Pfad hierfür steht in Notes.ini).
Fang bitte mal klein an, dann können wir Dir hier helfen.
Es gibt keinen Grund in Panik auszubrechen, kontrolliere
bitte die domobj.tlb auf Existenz und in Deiner VB Projekt
ob das Domino Object Modell eingebunden ist.
Ciao
Don Pasquale
-
Bei = NEW Session sagt er "Ungültige Verwendung des Schlüsselwortes NEW"
-
Hast Du überhaupt LotusScript eingebunden ?
Gibt mal alle Zeilen aus Deiner vbp Datei die mit Reference anfangen
Ciao
Don Pasquale
-
Wie gesagt sobald ich die Zeile
Set Session = CreateObject("Notes.NotesSession")
ausführe poppt der Lotus Client hoch.
Set Session = NEW NotesSession
ist irgendwie nicht möglich. Siehe posting oben...
-
Nö, siehe Du mal "Posting oben" (von Don Paquale).
Und zieh' Dir den Fred mal 'rein - der könnte weiterhelfen:
http://www.atnotes.de/index.php?topic=17289.0
Bernhard
-
@gfunkus,
FANG KLEIN AN, oder wie marinero es ausdrückte,
mit irgendetwas einfachem. Und dann poste nochmal den gesamten Code, aber bitte ohne die dutzende Remarks.
Dann fangen wir von vorne an.
Ciao
Don Pasquale
-
Hier mal was kleines...
Private Sub sendetest()
Dim s As NOTESSESSION
Set s = CreateObject("Notes.NotesSession")
Call s.Initialize
MsgBox s.COMMONUSERNAME
End Sub
Wie schon gesagt, ab der Stelle CrwateObject lädt mein Windoofs den Notesclient.
Aber genau das will ich nicht... ihr meintet es geht auch ohne gestarteten NotesClient. Aber woher zieht er mein Passwort?
-
Die Passwortabfrage realisiert der in das VB-Programm eingebundene Teil von Notes. Er wird bei CreateObject ausgeführt.
Bernhard
-
Und welche Möglichkeit gibt es dann dies Note Session zu starten ohne das der Notesclient sichtbar geladen wird?
kann man keine Session im Backend aufmachen und das Passwort mit der Anwendung übergeben? Kann man den Notesclient dann nicht irgendwie visible=false setzen???
-
Notes erlaubt es prinzipiell nicht, Passwörter irgendwie automatisiert zu übergeben. Dies ist ein wesentlicher Sicherheitsaspekt.
Bernhard
-
Also kann man man auch nicht ohne den offenen Notesclient mit einer externen Anwendung auf Notes zugreifen.
Dies würde ja dann der Aussage einiger Mitglieder hier wiedersprechen. Denn diese schriebn in den vorgigen Posts das es möglich sei ohne den offenen NotesClient. Wie soll das gehen???
Hat wer evtl. nen Stück Code wie man direkt eine Mail mit VB an einen SMTP Relay schickt?
-
Natürlich. Und zwar mit Java und com und ab 6.5 auch mit Webservices.
Die für den Remote Zugriff von Notes für Java und Com mitgelieferten Klassen greifen dabei auf die user.id Datei zu (ausser Corba, glaub ich).
Wie bereits von Don und mir mehrfach gesagt, braucht der Notes Client nicht offen zu sein.
-
Auch ich habe nicht behauptet, der Client müsse offen sein - ich sehe das genauso wie Axel und Don.
Bernhard
-
Ich habe den Eindruck, dass hier Missverständnisse mit Begriffen umherschwirren: man beachte: Offen und gestartet sind unterschiedliche Begriffe. Damit man Notes nutzen kann, muss der Client zwar gestartet, aber nicht offen sein. Und das Starten passiert eigentlich automatisch, sobald die nlnotes.dll angezogen wird.
-
Genau, Jens. nlnotes.dll muss laufen (wie eine Art "lokaler Notes-Server" im Sinne von "dieser übernimmt jetzt die Anfragen Notes-spezifischer Art"), und das heisst noch lange nicht, dass hierfür ein kompletter Notes-Client erscheinen muss.
Ich befürchte, dass die Einbindung der Notes-Objekte in das VB-Projekt unvollständig ist. Da ich da ja selber schon mal tierisch darauf hereingefallen bin, möchte ich "gfunkus" (oder wie immer er wirklich heisst ...) nochmal dringend auf den von mir geposteten Link hinweisen.
Bernhard
-
Das ist sehr wahrscheinlich, dass da ein Konfigurations- oder Installationsproblem vorliegt, wäre typisch für die Erscheinung
-
Ich glaub die user.id mit der zugegriffen werden soll muss sich in der PATH-Umgebungsvariable des OS befinden.
-
Es ist die User-ID, die in der NOTES.INI unter
KeyFileName=...
eingetragen ist.
Die NOTES.INI wird zunächst im Arbeitsverzeichnis/Programmverzeichnis und dann im PATH gesucht.
Andreas
-
@koehlerbv Wo hast du diese Information her. Aus der Domino Designer Hilfe nicht, denn dort ist explizit beschrieben wie man ein Password an Notes übergibt. Was soll das auch für ein Sicherheitsfeature sein.
@gfunkus Warum schreibst du eigentlich notes.Notessession. Laut Designer Hilfe soll es Lotus.Notessession heissen.
Falls du nicht zusammenkommst poste es nochmal und ich schaue mal, hatte ein altes Projekt wo ich das schon mal gemacht habe und hat einwandfrei funktioniert.
Grüße
Ralf
-
Kannst du mir das Projekt evtl. mal schicken?
gfunkus@web.de
Danke.
-
Hallo Gfunkus!
Sorry, aber ich darf Source Code von unserer Firma nicht weitergeben, aber ich habe schnell ein Beispiel geschrieben für die Initialisierung der Session. funktioniert einwandfrei. Hier ist der Code
Dim session As New NotesSession
Dim db As NotesDatabase
Call session.Initialize("yourPwd")
Set db = session.GetDatabase("Servername", "mail/rpetter.nsf")
Msgbox db.FileName
Dein Fehler ist die Verwendung von Notes.Notessession denn das ist für OLE und nicht für den Zugriff im Hintergrund. Probiere diesen Code mal in dem Click Ereignis einer Schaltfläche und poste dann das Ergebnis.
Grüße
Ralf
-
Hallo Gfunkus!
Also sehr wichtig, scheint dir das Problem ja nicht zu sein. Ich finde das mindeste wäre wenn ich schon Hilfe bekomme, dass ich auf die Hilfe auch zeitgerecht antworte und nicht Tage dazwischen vergehen lasse.
Grüße
Ralf