Domino 9 und frühere Versionen > ND7: Entwicklung
Mime Mail erstellen
kawie:
Hallo zusammen,
ich habe so eine Art Kampagnenmanagement zusammengebaut wo aus diversen Richtextfeldern eine Mail erstellt werden soll.
Diese Felder werden in eine Zwischenmaske als Mime inhalte gespeichert und später zu einem Mime Objekt mit dem Namen Body zusammengefügt und versendet.
Das klappt auch alles Prima und ohne Probleme.
Nun aber der Haken. Wenn ich in einem der Richtextfelder ein Anhang hinzufüge, spinnt Notes scheinbar rum und fügt jedem Mime Objekt beim Konvertieren diesen Anhang hinzu.
Jemand eine Idee ?
--- Code: ---Function ConvertRichText(Feld1 As String,Feld2 As String,Feld3 As String,Feld4 As String, Feld5 As String, lndoc As NotesDocument)
Dim lns As New NotesSession
Dim newdoc As NotesDocument
Set lndb = lns.CurrentDatabase
If lndoc.MimeDocId(0)>"" Then
Set newdoc =lndb.GetDocumentByid(lndoc.MimeDocId(0))
End If
If newdoc Is Nothing Then
Set newdoc=New NotesDocument(lndb)
newdoc.Form="MimeDoc"
Else
While newDoc.HasItem(Feld1)
newDoc.RemoveItem(Feld1)
Wend
While newDoc.HasItem(Feld2)
newDoc.RemoveItem(Feld2)
Wend
While newDoc.HasItem(Feld3)
newDoc.RemoveItem(Feld3)
Wend
While newDoc.HasItem(Feld4)
newDoc.RemoveItem(Feld4)
Wend
While newDoc.HasItem(Feld5)
newDoc.RemoveItem(Feld5)
Wend
End If
strmimewarning = lns.GetEnvironmentString("MIMEConvertWarning", True)
Call lns.SetEnvironmentVar("MIMEConvertWarning", "1", True)
lns.ConvertMime = False
Call newdoc.ReplaceItemValue( "DocID", Cstr( newdoc.UniversalID ))
Call newdoc.ReplaceItemValue( "$NoteHasNativeMIME", "1" )
Set lnitem = lndoc.GetFirstItem( Feld1)
Call lnitem.CopyItemToDocument( newdoc, Feld1 )
Set lnitem = lndoc.GetFirstItem( Feld2)
Call lnitem.CopyItemToDocument( newdoc, Feld2 )
Set lnitem = lndoc.GetFirstItem( Feld3)
Call lnitem.CopyItemToDocument( newdoc, Feld3 )
Set lnitem = lndoc.GetFirstItem( Feld4)
Call lnitem.CopyItemToDocument( newdoc, Feld4 )
Set lnitem = lndoc.GetFirstItem( Feld5)
Call lnitem.CopyItemToDocument( newdoc, Feld5 )
Call newdoc.Save( True, True )
lndoc.MimeDocID = Cstr(newdoc.NoteID)
Call lndoc.Save(False,True)
Call refreshDocument( lns, lndb, newdoc )
strnoteid = newdoc.NoteID
Set newdoc = Nothing
Call lns.SetEnvironmentVar("MIMEConvertWarning", strmimewarning, True)
lns.ConvertMime = True
End Function
--- Ende Code ---
Nur Feld 2 enthält einen Anhang!
pram:
Sind Feld1 - Feld5 auch wirklich (noch) MIME-Felder? Und ist das was zum Schluss heraus kommt auch ein MIME-Feld
Ich will damit andeuten ob du "convertMime" nicht zu spät auf FALSE setzt...
Notes konvertiert nämlich beim ersten Lesen MIME wieder nach RTF (auch im Debugger)
Es könnte jetzt sein, dass irgendwas beim Löschen der Items schief geht (sie werden nämlich nach RTF konvertiert und anschließend gleich gelöscht)
Evtl musst du dir auch das MIME Feld "zu fuß" zusammenbauen. Ich hab schonmal gepostet wie das im Prinzip geht.
Gruß
Roland
kawie:
Hallo zusammen,
ja die Felder 1-5 sind in dem Zwischendokument MimeFelder.
Hab auch neue Erkenntnise. Diese Phänomen habe ich bei LN 7.02.
Ein Kollege hat es mit Notes 8.5 ausgeführt und da funktioniert das einwandfrei.
Bug/Feature ?
Gruss
Kai
pram:
Was passiert wenn du alle Items mit CopyAllItems kopierst?
evtl kannst du das Dokument so in ein Zwischendokument kopieren, daraus alle nicht benötigten Felder löschen und dieses Dokument dann mittels copyAllItems über dein newDoc "legen" (Wenn du das originaldoc nicht speicherst, kannst auch die nicht benötigten Felder vom Originaldoc löschen)
Übrigens: Wenn so ein MIME-Feld "Body" heißt verhält es sich irgendwie anders als wenn es einen anderen Namen hat!
Gruß
Roland
kawie:
Hallo Roland,
Ok ich fasse die Prozedur mal zusammen.
Ich hole mir von diversen Quellen (Profiledoc, usereingaben etc.) die Felder 1-5 und speicher diese in dem Originaldokument.
Danach werden diese Daten in ein "neues" Dokument übergeben in dessen Form ebenfalls die Felder 1-5 Richtext definiert sind, allerdings hier als Save as mime/Html Content.
Das Funktioniert so lange super so lange ich in keinem der Felder ein Attachment einbette.
Wenn ich das tue wird beim Konvertieren das Attachment in jeder der 5 Felder plaziert! Und auch im jedem Feld in den Mime Eigenschaften angezeigt.
Das ganze mit Notes 7.02 entwickelt und getestet.
Mit Notes 8.5 handelt der Client wie gewünscht und Plaziert das Attachment nur in dem Feld wo es eingefügt wurde.
Das hat (noch) nichts mit dem Body zu tun der Wird erst nach dem Konvertieren erstellt und ist an dieser Stelle noch nicht vorhanden.
Danke und Gruss
Kai
P.S: Die Lösung die ich mir jetzt gerade zusammenbaue wäre ein zusätzliches RT Feld wo die Attachements abgelegt werden sollen und wo die Daten auf der Platte exportiert werden und nachträglich in ein Mime Feld gestreamt werden. Finde ich zwar nicht so elegant aber eine andere Lösung fällt mir gerade nicht ein.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln