Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: OlTu am 24.11.09 - 12:12:31

Titel: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: OlTu am 24.11.09 - 12:12:31
Die Frage richtet sich mehr an diejenigen, die JAVA können.
Ich habe ein Anzeige-Problem, wenn ich im Backend eine Datei, z.B. eine "CSV" erzeuge und dann per Email verschicke, weil statt des entsprechenden Excel Icons wird ein graues Icon angezeigt.
Kann man das umgehen, indem man z.B. eine CSV-Vorlage als Attachment in einem Dokument ablegt und mittels "magischer" jAVA Funktionen diese Vorlage mit Daten befüllt und dann per Email versendet? Es geht mir nur um die Darstellung des Icons.
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: geppertb am 24.11.09 - 12:37:04
Hallo, wie wird die email verschickt?

Hast du schon einmal versucht die email an einen andere email Adresse zu versenden wie z.b. hotmail oder googlemail? Ich habe den verdacht das da nämlich deine angehängten Dateien gar nicht ankommen werden. Wenn du die email via Lotus Script verschickst muss der Anhang per Stream nochmal angehängt werden.

Ich hab mir dazu mal ne kleine funktion geschrieben:

Code
Function enviarEmailCCAttachment(sFrom As String, sSendTo As String, sSubject As String, sCC As String, sEstilo As String, sConteudo As String, ndContext As NotesDocument) As String
	
	On Error Goto ErrorHandler
	
	Dim ndMail		As NotesDocument
	
	
	Dim nmeParent 		As NotesMIMEEntity
	Dim nmeChild		As NotesMIMEEntity
	Dim nmhHTML		As NotesMimeHeader
	Dim nsStream 		As NotesStream
	Dim EmbedObj		As NotesEmbeddedObject  
	Dim iCont			As Integer
	Dim Attach		As NotesItem
	
	Dim nmeArquivo As NotesMimeEntity
	Dim nmaHeader	As NotesMimeHeader
	
	Dim sArquivo		As String
	
	Dim filecount		As Integer
	
	Session.convertMIME = False
	
	Set ndMail = New NotesDocument(DbMail)
	With ndMail
		.Form = "Memo"
		.From = sFrom
		
		If Len(sCC) > 1 Then
			.CopyTo = sCC
			.Recipients = Split(sSendTo & ";" & sCC, ";")
		Else
			.Recipients = sSendTo
		End If
		
		.Subject = sSubject
		.SendTo = sSendTo
		.PostedDate = Now
		
		Set nmeParent = .CreateMIMEEntity
		
		Set nmhHTML = nmeParent.CreateHeader({MIME-Version})
		Call nmhHTML.SetHeaderVal("1.0")
		
		Set nmhHTML = nmeParent.CreateHeader("Content-Type")
		Call nmhHTML.SetHeaderValAndParams({multipart/alternative;boundary="=NextPart_="})
		
		Set nmeChild = nmeParent.createChildEntity()
		
		Set nsStream = Session.createStream()
		With nsStream
			Call .WriteText("<html>", EOL_CR)
			Call .WriteText("<head>", EOL_CR)
			Call .WriteText(|<style type="text/css">| & sEstilo & |</style>|, EOL_CR)
			Call .WriteText("</head>", EOL_CR)
			Call .WriteText("<body>", EOL_CR)
			Call .WriteText(sConteudo)
			Call .WriteText("</body>", EOL_CR)
			Call .WriteText("</html>", EOL_CR)
		End With
		
		Call nmeChild.setContentFromText(nsStream, {text/html;charset="iso-8859-1"}, ENC_NONE)
		Call nsStream.close()
		
		fileCount = 1
		Forall item In ndContext.Items
			If item.type = ATTACHMENT Then
				Dim neoArquivo As NotesEmbeddedObject
				sArquivo = ndContext.GetItemValue("AName_" & Cstr(fileCount))(0)
				Set neoArquivo = ndContext.GetAttachment(sArquivo)
				If Not neoArquivo Is Nothing Then
					Set nsStream = Session.createStream()
					Call neoArquivo.ExtractFile(ndParametros.DiretorioTemp(0) & "\" & sArquivo)	
					nsStream.Open(ndParametros.DiretorioTemp(0) & "\" & sArquivo)
					Set nmeArquivo = nmeParent.createChildEntity()
					Set nmaHeader = nmeArquivo.createHeader("Content-Type")
					Call nmaHeader.setHeaderVal("multipart/mixed")
					Set nmaHeader = nmeArquivo.createHeader("Content-Disposition")
					Call nmaHeader.setHeaderVal("attachment; filename=" & sArquivo)
					Set nmaHeader = nmeArquivo.createHeader("Content-ID")
					Call nmaHeader.setHeaderVal(sArquivo)
					Call nmeArquivo.setContentFromBytes(nsStream, "application/octet-stream", ENC_IDENTITY_BINARY)					
					Call nsStream.close()
					Kill ndParametros.DiretorioTemp(0) & "\" & sArquivo
				End If
				
				fileCount = fileCount + 1
				
			End If
		End Forall	
		
		Call .Save(True, False)
	End With
	
	Exit Function
	
ErrorHandler:
	
	enviarEmailCCAttachment = "(" & sCaminho & ") libUtil (enviarEmailHTML): " & Error$ & " (" & Erl & ")"
	Exit Function
	
End Function
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: dirk_2909 am 24.11.09 - 12:37:59
Das Problem liegt nicht direkt an Java.
Es liegt an Notes. Wenn der Dateipfad der Datei, die angehängt werden muss, ziemlich lang ist, dann zeigt Notes das graue Symbol an.
Ist der Dateipfad kurz, dann wird auch das richtige Symbol angezeigt.
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: OlTu am 24.11.09 - 12:57:58
ich versuch's nochmal:

Problem = Excel Attachment (.csv) mit Lotus Script im im Backend erzeugen + im Dokument speichern, danach das Dokument im Frontend öffnen -> Attachment Icon ist graues Rechteck

Lösung? = eine Excel Vorlage im Frontend im Dokument ablegen (hier wird das Icon richtig als Excel Icon dargestell) , dann mit JAVA direkt in die Vorlage Daten reinschreiben , danach das Dokument speichern, im Frontend öffnen -> Attachment Icon ist grünes X. <= ist das mit JAVA möglich?

Mit Script muss ich immer zuerst detachen, mit Daten füllen und attachen. Dabei verliert das Icon sein grünes X.
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: ascabg am 24.11.09 - 13:33:23
Hallo,

Fuer Dein geschildertes Scenario.
Nein.


Andreas
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: dirk_2909 am 24.11.09 - 13:39:20
Wie lang ist denn dein Dateipfad der Datei, die du anhängst?? 
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: OlTu am 24.11.09 - 14:13:17
der Pfad = C:\TEMP\vorlage.csv
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: koehlerbv am 24.11.09 - 15:07:44
Das hängt nicht von der Pfadlänge ab, sondern ob es im Front- oder Backend passiert. Backend = Standard-Icon, Frontend = passendes Icon (so dem Frontend bekannt).

Bernhard
Titel: Re: Attachment im Backend mit JAVA anhängen um Icon beizubehalten?
Beitrag von: OlTu am 24.11.09 - 15:25:32
ja, das ist der Punkt, Bernhard, und ich glaube, ich habe inzwischen eine Lösung für mein Problem gefunden - DXL  ;)