Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Janosch am 11.12.08 - 10:48:26
-
Hallo liebe Notes Experten,
ich bin gerade dabei für meine Software Notes mit einzubinden.
Ich Programmiere mit vb6 und arbeite zur Zeit an einer Funktion die mir eine Mail generiert. Was auch kein Problem ist. Im Internet findet man ja auch massig Beispiele.
Jedoch habe ich ein Problem:
Ich möchte natürlich auch HTML EMails erstellen, und nicht nur Plain Text.
Leider habe ich keine Ahnung wo das im Objektmodell steckt.
Bin nach manueller Suche nicht fündig geworden.
Leider kann ich mein Problem auch nicht mit Objektmodellen von andren Mail Programmen assozieren.
Bei z.B. Tobit David zehn ist es relativ einfach. Es gibt ein DvApi32.MailItem Objekt mit der Methode .BodyText darauf folgen .PlainText oder HTMLText.
Auch ist es relativ einfach an eine kostenfreie Dokumentation des Objektmodels zu kommen. Was bei IBM/Notes leider nicht der Fall ist.
Wäre super wenn ihr Experten mir Rat geben könntet :)
Gruß Janosch
-
Lotus Domino Designer documentation (http://www.ibm.com/developerworks/lotus/documentation/dominodesigner/70x.html?S_TACT=105AGX13&S_CMP=LPLOTUS) vor allem die COM-Geschichten. In der "normalen" Designer-Hilfe findest Du die Objektstruktur.
Du willst Dir vor allem die NotesMIMEEntity class ansehen.
-
Hier gibt's eine gute Doku zur COM-Programmierung:
COM Together - with Domino (http://www.redbooks.ibm.com/abstracts/sg245670.html?Open)
Axel
-
Vielen Dank für die Ratschläge ;)
Ich werde über meine Erfolge/Misserfolge ::) berichten
Gruß Janosch
-
Leider bin ich noch gar nicht bis zum HTML EMail Versand gekommen.
Durch die Dokus von euch beiden habe ich angefangen nicht mehr alles 'as Object' zu deklarieren.
Statt z.B. nicht mehr
Dim Session As NotesSession Dim Session As Object
Dim MailDoc As NotesDocument Dim MailDoc As Object
Dim Maildb As NotesDatabase Dim Maildb As Object
Seit dieser Maßnahme bekomme ich kein Bein mehr auf den Boden.
Hier mal ein kleines Beispiel:
Dim Maildb As NotesDatabase 'Die Datenbank
Dim UserName As String 'Der Benutzername
Dim MailDbName As String 'Der Datenbankname
Dim MailDoc As NotesDocument 'Das Maildokument selbst
Dim Session As NotesSession 'Die Notes Session
Set Session = New NotesSession
Set Session = CreateObject("Notes.NotesSession")
Set Maildb = Session.GetDatabase("", MailDbName)
If Maildb.IsOpen = True Then
'Fertig zum mailen!
Else
Maildb.OPENMAIL
End If
'Ein neues Maildokument erstellen
Set MailDoc = Maildb.CreateDocument
MailDoc.Form = "Memo"
MailDoc.sendto = Recipient
MailDoc.CopyTo = CopyTo
MailDoc.Blindcopyto = Blindcopy
MailDoc.Subject = Subject
MailDoc.Body = BodyText
MailDoc.SaveMessageOnSend = SaveIt
'Lotus öffnen
Dim Workspace As Object
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Call Workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body")
MailDoc.PostedDate = Now()
MailDoc.Send 0, Recipient
Jedes mal kracht es schon ganz am Anfang bei
Set Session = CreateObject("Notes.NotesSession")
"Typen unverträglich"
Ich habe auch andere Beispiele getestet, welche As NotesSession, As NotesDataBase...etc deklariert waren. Leider immer mit dem gleichen Ergebnis.
-
...
Dim Session As NotesSession 'Die Notes Session
Set Session = New NotesSession
Set Session = CreateObject("Notes.NotesSession")
...
So kann das schon mal nicht gehen.
Versuch das Ganze mal so:
...
Dim notesSession As Object
Dim notesDatabase As Object
Set notesSession = CreateObject("Notes.NotesSession")
Set notesDatabase = notesSession.GetDatabase(strServer, strDbName)
...
Axel
-
Wenn ich dann noch Dim MailDoc As Object deklariere dann funktioniert es.
Soweit war ich ja schon.
Das Object As NotesSession, ... As NotesDocument, ... As NotesDatabase Gedöns wollte ich nur zur Vollständigkeithalber mit aufnehmen, wegen der intellisense Geschichte.
Ich hatte nur gehofft dadurch mein Problem mit der HTML Mail zu lösen. Ich komme einfach nicht dahinter wie ich eine HTML Mail verschicke :-:
-
MIt UI-Funktionen klappt das auch nicht. Das musst Du im Backend (Notesdocument, nicht NotesUIDocument) machen.
-
Leider werd ich aus deiner Ausage nicht schlau :-\
Hast Du nicht ein kleines Beispiel für eine Mail mit HTML im body oder weisst Du wo man eins finden kann ?
Janosch
-
Beispiele finden sich zuhauf in den Dokus, die IBM jedem zur Verfügung stellt. Die Links wurden doch schon gepostet.
Bernhard
-
Nach langen Lesen & Recherchieren bin ich zu diesen Ergebnis gekommen. Leider wird mir der HTML Inhalt immer in eine .dat Datei abgelegt. Diese .dat Datei kann ich zwar ohne Probleme mit dem Viewer anschauen.
In diesem Fall:
Hallo Welt
Ich habe schon häufiger gelesen das ein solches Phaenomen auch an Sicherheitseinstellungen liegen kann. Jedoch sollte ein Fett markiertes Wort keine Probleme darstellen. Ich haba ja schon häufiger solche Mails empfangen oder gar selbst geschrieben.
Dim Maildb As Object
Dim MailDoc As Object
'Dim session As NotesSession
Dim session As Object
Dim body As Object
'Dim body As NotesMIMEEntity
Dim mh As Object
'Dim mh As NotesMIMEHeader
Dim mc As Object
'Dim mc As NotesMIMEEntity
Dim stream As Object
'Dim stream As NotesStream
Dim MailDbName As String
Set session = CreateObject("Notes.NotesSession")
Set Maildb = session.GetDatabase(MailDbName, MailDbName)
If Maildb.IsOpen = True Then
'Fertig zum mailen!
Else
Maildb.OPENMAIL
End If
Set MailDoc = Maildb.CreateDocument
session.ConvertMime = False
MailDoc.Form = "Memo"
MailDoc.sendto = recipient
MailDoc.subject = "Test HTML Messages"
'Create the MIME headers
Set body = MailDoc.CreateMIMEEntity
Set mh = body.CreateHeader("MIME - VERSION")
Call mh.SetHeaderVal("1.0")
Set mh = body.CreateHeader("Content-Type")
Call mh.SetHeaderValAndParams("SetHeaderValAndParams")
Set mc = body.CreateChildEntity()
Set stream = session.CreateStream()
Call stream.WriteText("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN""" & _
"""http://www.w3.org/TR/html4/loose.dtd"">" & _
"<html> <head> <title>Beschreibung der Seite</title> </head> <body>" & _
"Hallo <b style='mso-bidi-font-weight:normal'>Welt</b></p> </body> </html>")
Call mc.SetContentFromText(stream, "iso-8859-1", ENC_NONE)
'Close the stream
Call stream.Close
'Send it
Call MailDoc.Send 0, recipient