Autor Thema: Notes Dokument als MIME-Html exportieren und diese Daten manipulieren  (Gelesen 1662 mal)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Hallo Forum,

ich habe folgendes Problem und hoffe Ihr könnt mir wiedermal kompetent helfen:

Situation:
Ich erzeuge eine MimeHTML Datei (EML-Datei) aus einem Notes-Dokument.
Diese Datei kann bis mehrere 100 Mbyte groß werden.
Soweit funktioniert auch alles noch bestens.

Problem:
Nun muss ich aber im Header der EML Datei den Eintrag für den Maskennamen anpassen. (Siehe Screenshot)
Das wollte ich direkt beim Streaming der Daten auf die Platte machen. Leider schlägt aber jeder Versuch die Daten zu manipulieren fehl bzw.mir fällt nichts mehr ein, wie ich das noch machen könnte.

Die einzige Möglichkeit die bisher funktioniert ist nach der Erstellung der EML Datei die ganze Datei nochmals zeilenweise zu kopieren und dabei den Eintrag für den Formnamen zu ändern.
Ist natürlich bei Dateien von mehreren 100 Mbyte keine schöne Lösung.


Das muss doch irgendwie gehen, dass man direkt beim Streaming der Daten auf die Platte oder direkt im Nachgang den Eintrag direkt anpassen kann.

Nur wie????
Danke schon mal für Eure Untersützung.


Hier mein Code:

Code
Function C_EML_Back_GetMime (doc As NotesDocument, stream As NotesStream) As Integer
	On Error GoTo errhandler
	
	Dim mime As NotesMIMEEntity
	Dim child As NotesMIMEEntity
	
	Set mime = doc.GetMIMEEntity
	
	'** 8.5.1 introduced the convertToMIME() function
	'** REMOVE this if/then block if you're on less than 8.5.1
	If (mime Is Nothing) Then
		Call doc.ConvertToMIME(2)
		Set mime = doc.GetMIMEEntity
	End If
	
	If Not (mime Is Nothing) Then
		Call C_EML_Back_PrintMime(mime, stream)
		C_EML_Back_GetMime = True
	Else
		Call stream.WriteText( "No MIME Found in " & doc.Subject(0), EOL_PLATFORM )
	End If
	
	Exit Function

errhandler:
	IB_MSGBox "Error in  -C_EML_Back_GetMime-    Error: " & Error & " (" & Err &  ") in line: " & Erl , 16, "Error"
	Exit Function
End Function





Function C_EML_Back_PrintMime (mime As NotesMIMEEntity, stream As NotesStream) As Integer
	
	On Error GoTo errhandler
	Dim child As NotesMIMEEntity
	Dim zwerg As String
	
	If (mime Is Nothing) Then
		Exit Function
	End If
	
	If (mime.Encoding = ENC_IDENTITY_BINARY) Then
		Call mime.DecodeContent
		Call mime.EncodeContent(ENC_BASE64)
	End If
	
	Call mime.GetEntityAsText(stream)   <----- Hier werden die EML-Header Daten auf die Platte geschrieben!
	
	%REM
	zwerg = mime.Headers
	If InStr(zwerg, "(BodyFieldDummy)") > 0 Then
		zwerg = Replace(zwerg, "(BodyFieldDummy)", "Memo")
	End If
	Call stream.WriteText( zwerg, EOL_NONE )
	%END REM
		
	If mime.ContentType = "multipart" Then
		If (mime.Preamble <> "") Then
			Call stream.WriteText( mime.Preamble, EOL_NONE )
		End If
		
		Set child = mime.GetFirstChildEntity
		While Not(child Is Nothing)
			Call C_EML_Back_WriteAsciiBytes(stream, child.BoundaryStart)
			Call C_EML_Back_PrintMime( child, stream )
			Call C_EML_Back_WriteAsciiBytes(stream, child.BoundaryEnd)
			Set child = child.GetNextSibling
		Wend
	End If

	
	C_EML_Back_PrintMime = True
	
	Exit Function

errhandler:
	MSGBox "Error in  -C_EML_Back_PrintMime-    Error: " & Error & " (" & Err &  ") in line: " & Erl , 16, "Error"
	Exit Function
End Function




Danke

Bernd


« Letzte Änderung: 29.10.15 - 14:48:51 von Legolas »
Arbeite klug, nicht hart.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Und wenn Du vorher in das Dokument den gewünschten Maskennamen einträgst?

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Hallo Peter,

habe ich auch schon bedacht.
Nur wird dieser Maskenname in der Anwendung schon für andere Zwecke verwendet.
Setzte ich diesen vor dem Rendern, werden alle Designelemente in dieser Maske usw. mit gerendert.

Ich komme nicht drum rum, den Form-Namen abzuändern.

Grüße
Bernd
Arbeite klug, nicht hart.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz