Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bml am 25.08.03 - 13:39:38

Titel: Attachment doppelt
Beitrag von: bml am 25.08.03 - 13:39:38
Hi Zusammen

Ich hab´da mal wieder so ein komisches Problem, zu dem ich keine Lösung weiß

Ich möchte ein bestimmte Datei als Attachment versenden....- Klingt doch erstmal recht simpel.
So ... aber jetzt wird es spannend. Die Email kommt auch an, das Attachment ist auch da, aber daneben ist noch ein Attachment. Ich habe also 2 Attachments ich weiß nur nicht, wo das Zweite herkommt.
Das erste Attachment besitzt den richtigen Dateinamen und das zweite Attachment hat so komische Namen (Bsp.ATTRBWN2)

Kann mir vielleicht jemand helfen.
ich sage auch schon mal, wie immer , brav danke - DANKE



Titel: Re:Attachment doppelt
Beitrag von: Glombi am 26.08.03 - 08:27:15
Hi,
wie wird den die Mail erstellt? Per Script? Dann poste mal den Code.

Deine Beschreibung deutet darauf hin, dass im Dokument die Datei 2x vorhanden ist. Notes vergibt dann für das 2. Attachment einen internen Namen.

Andreas
Titel: Re:Attachment doppelt
Beitrag von: bml am 26.08.03 - 10:45:35
Hi Andreas

hier das gewünschte Posting

<Script Bibliothek>
Function CreateEmail(uidoc As NotesUiDocument) As Integer
Dim ws As  NotesUIWorkspace
Dim docMail As NotesDocument
Dim rtitm As NotesRichTextItem
Dim itmSubject As NotesItem
Dim itmrecipients As NotesItem
Dim itmSaveFile As NotesItem
Dim object As NotesEmbeddedObject   

   '--> Funktion wird auf Failure gesetzt
   CreateEmail = False
   
   '--> Instanzierung der benutzten NotesObjekte
   Set docMail = uidoc.Document
   Set rtitm = New NotesRichTextItem(docMail,"Attachment")
   Set itmSubject = docMail.GetFirstItem("Betreff")
   Set itmRecipients = docMail.GetFirstItem("SendTo")
   Set rtitm = docMail.GetFirstItem("Attachment")
   Set itmSaveFile = docMail.GetFirstItem("SaveFile")
   Set object = docMail.GetAttachment( itmSaveFile.Values(0))
   Set object= rtitm.EmbedObject(EMBED_OBJECT, "",itmSaveFile.Values(0))
    '<--
   
   '--> Überprüfung, ob das verwendete Feld vom Typ ein RichTextFeld ist.
   '      Wenn das Feld ein RichTextFeld ist, wird versucht die ausgewählte Datei anzuhängen.
   If ( rtitm.Type = RICHTEXT ) Then
      Set object = rtitm.EmbedObject( EMBED_ATTACHMENT, "",itmSaveFile.Values(0))
      If ( object Is Nothing ) Then
         Messagebox( "Keine Datei ausgewählt." )
         Exit Function
      End If
   End If   
   '<--   
   
   '--> Email wird zusammengesetzt   
   docMail.Form = "Memo" '--> Dokumentenart
   docMail.Subject = itmSubject.Values(0) '--> Titel oder Betreff der Email
   docMail.SentTo = itmRecipients.Values(0) '--> Empfänger
   docMail.Body = object.Object '--> Attachment
   '<--
   
   '--> Mail wird versendet
   Call docMail.Send(False)
   '--> Ausgabe: Nach versenden des Dokuments
   Print("Email wurde an Empfänger versendet")
   '<--
   
   '--> Dokument wird gesichert
   Call docMail.Save(True,False)
   '<--
   
   '--> Funktion wird auf Successfull gesetzt
   CreateEmail = True
   
   
End Function

<Aufruf der Function>
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   
   Set uidoc = ws.CurrentDocument
   Call CreateEmail(uidoc)   <---- Aufruf
End Sub

SO, Viel Spass beim lesen
Titel: Re:Attachment doppelt
Beitrag von: Glombi am 26.08.03 - 10:52:53
Hi,
wenn ich das richtig sehe, ist das Attachment doppelt: Einmal im Feld Attachment und einmal im Feld Body.

Andreas
Titel: Re:Attachment doppelt
Beitrag von: bml am 26.08.03 - 11:04:56
@glombi

isch hab heute wohl einen Bretterzaun vorm Kopf

aber ich verstehe, nicht ganz was du meinst
Im Feld Body muss es stehen, weil das der Body der Mail ist... oder was meinst du ??

Titel: Re:Attachment doppelt
Beitrag von: Glombi am 26.08.03 - 11:23:07
Ja, aber es steht doch schon im Feld "Attachment" als Anhang

Set object = rtitm.EmbedObject( EMBED_ATTACHMENT, "",itmSaveFile.Values(0))

und rtitm ist das Feld Attachment
Set rtitm = docMail.GetFirstItem("Attachment")

Ist es so gedacht, dass Du das aktuelle Dokument sendest oder willst Du ein neues temporäres Dokument erstellen und dieses senden?

Andreas
Titel: Re:Attachment doppelt
Beitrag von: bml am 26.08.03 - 11:29:09
eigentlich will schon nur das "original Dokument" senden - kein Temp Dok

meinst du diese Zeile ist zu viel ??

   Set object= rtitm.EmbedObject(EMBED_OBJECT, "",itmSaveFile.Values(0))
Titel: Re:Attachment doppelt
Beitrag von: Glombi am 26.08.03 - 12:06:09
Es sollte so aussehen:

Function CreateEmail(uidoc As NotesUiDocument) As Integer
Dim ws As  NotesUIWorkspace
Dim docMail As NotesDocument
Dim rtitm As NotesRichTextItem
Dim itmSubject As NotesItem
Dim itmrecipients As NotesItem
Dim itmSaveFile As NotesItem
Dim object As NotesEmbeddedObject  

   '--> Funktion wird auf Failure gesetzt
   CreateEmail = False
   
   '--> Instanzierung der benutzten NotesObjekte
   Set docMail = uidoc.Document
   Set rtitm = New NotesRichTextItem(docMail,"Body")
   Set itmSubject = docMail.GetFirstItem("Betreff")
   Set itmRecipients = docMail.GetFirstItem("SendTo")
   Set rtitm = docMail.GetFirstItem("Body")
   Set itmSaveFile = docMail.GetFirstItem("SaveFile")
   Set object = docMail.GetAttachment( itmSaveFile.Values(0))
   Set object= rtitm.EmbedObject(EMBED_OBJECT, "",itmSaveFile.Values(0))
    '<--
   
   '--> Überprüfung, ob das verwendete Feld vom Typ ein RichTextFeld ist.
   '      Wenn das Feld ein RichTextFeld ist, wird versucht die ausgewählte Datei anzuhängen.
   If ( rtitm.Type = RICHTEXT ) Then
      Set object = rtitm.EmbedObject( EMBED_ATTACHMENT, "",itmSaveFile.Values(0))
      If ( object Is Nothing ) Then
         Messagebox( "Keine Datei ausgewählt." )
         Exit Function
      End If
   End If  
   '<--  
   
   '--> Email wird zusammengesetzt  
   docMail.Form = "Memo" '--> Dokumentenart
   docMail.Subject = itmSubject.Values(0) '--> Titel oder Betreff der Email
   docMail.SentTo = itmRecipients.Values(0) '--> Empfänger
   '<--
   
   '--> Mail wird versendet
   Call docMail.Send(False)
   '--> Ausgabe: Nach versenden des Dokuments
   Print("Email wurde an Empfänger versendet")
   '<--
   
   '--> Dokument wird gesichert
   Call docMail.Save(True,False)
   '<--
   
   '--> Funktion wird auf Successfull gesetzt
   CreateEmail = True
   
   
End Function