Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Janosch am 11.12.08 - 10:48:26

Titel: HTML EMail
Beitrag 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
Titel: Re: HTML EMail
Beitrag von: m3 am 11.12.08 - 11:03:05
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.
Titel: Re: HTML EMail
Beitrag von: Axel am 11.12.08 - 11:35:52
Hier gibt's eine gute Doku zur COM-Programmierung:

COM Together - with Domino (http://www.redbooks.ibm.com/abstracts/sg245670.html?Open)


Axel
Titel: Re: HTML EMail
Beitrag von: Janosch am 11.12.08 - 15:40:45
Vielen Dank für die Ratschläge   ;)

Ich werde über meine Erfolge/Misserfolge ::) berichten

Gruß Janosch
Titel: Re: HTML EMail
Beitrag von: Janosch am 15.12.08 - 15:44:05
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.

Titel: Re: HTML EMail
Beitrag von: Axel am 15.12.08 - 15:53:44
...

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

Titel: Re: HTML EMail
Beitrag von: Janosch am 15.12.08 - 17:13:34
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  :-:
 
 


       
Titel: Re: HTML EMail
Beitrag von: m3 am 15.12.08 - 17:38:45
MIt UI-Funktionen klappt das auch nicht. Das musst Du im Backend (Notesdocument, nicht NotesUIDocument) machen.
Titel: Re: HTML EMail
Beitrag von: Janosch am 16.12.08 - 13:54:49
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
Titel: Re: HTML EMail
Beitrag von: koehlerbv am 16.12.08 - 17:38:18
Beispiele finden sich zuhauf in den Dokus, die IBM jedem zur Verfügung stellt. Die Links wurden doch schon gepostet.

Bernhard
Titel: Re: HTML EMail
Beitrag von: Janosch am 27.01.09 - 15:01:05
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