Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TGroener am 20.12.06 - 11:35:24

Titel: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 11:35:24
Hallo zusammen,

leider habe ich über die Suche nicht das gefunden was ich suche (oder falsch gesucht  ;)) ...

Ich möchte ein "Makro" schreiben, welches es dem Anwender ermöglicht, auf Knopfdruck, die aktuell selektierte EMail an eine DLL zu übergeben, damit diese dann die EMail weiterverarbeitet. Leider bin ich (immer noch) ein totaler LN-Neuling und habe absolut keine Ahnung wie das möglich ist.  ???

Hintergrund ist, das wir die EMails in ein Content-Management-System einlesen wollen, um diese dann darin weiter zu verarbeiten.

Vielen Dank schon einmal im vorraus  :)
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: Glombi am 20.12.06 - 11:41:17
Eine E-Mail ist ein kompliziertes Gebilde (Notes-Dokument) das man nicht an eine DLL übergeben kann.
Du kannst Informationen (Feldinhalte) an die DLL übergeben oder die Dokument-ID, mit der die DLL dann  -via COM - das Backenddokument holen und weiterverarbeiten kann.

Andreas
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 11:44:47
Eine E-Mail ist ein kompliziertes Gebilde (Notes-Dokument)

und das nicht nur in LN  :)


Du kannst Informationen (Feldinhalte) an die DLL übergeben oder die Dokument-ID

Die Dokument-ID würde mir ja schon reichen, (funktionierende) Routinen um damit dann meine Informationen auszulesen hab ich schon. Ich  weiß nur keinen Ansatz wo und wie ich das ganze in LN "einbauen" kann ...

Greetz
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: Glombi am 20.12.06 - 11:59:39
Wie bindet man eine DLL mit Script ein:

Unter (Declarations)
Declare Function FunktionsName Lib "namedll.dll" Alias "FunktionsNameAlias" (Byval DocID As String) As Integer

Aufruf
... hier normale Script Code ... 'sei doc das Notes-Backenddokument

call FunktionsNameAlias( doc.UniversalID)

übergibt dann die DocID an die DLL.


FunktionsName ist den Name der Function in Notes
FunktionsNameAlias muss der Name der Function sein, die in der DLL verwendet wird.

In der Regel verwende ich als namen der Notes Function den gleichebn Namen wie in der DLL.


Es kann aber Sinn machen, wenn man betriebssystemunabhängig programmieren will. Das säehe dann so aus:

Private Const DLL_NAME_W32 = "namedll.dll"     
Private Const DLL_NAME_UNIX = "/data/notesdata/namedll.so"     

Declare Function FunktionsName_W32 Lib DLL_NAME_W32 Alias "FunktionsName" (Byval sz As String) As Integer
Declare Function FunktionsName_UNIX Lib DLL_NAME_UNIX Alias "FunktionsName" (Byval sz As String) As Integer

Der Aufruf wäre dann so


Dim Session as New NotesSession
DLL_Platform = Session.Platform
Select Case DLL_Platform         
   Case "Windows/32":
      call FunktionsName_W32(doc.UniversalID)         
   Case "UNIX":
      call FunktionsName_UNIX(doc.UniversalID)         
   End Select         



Andreas
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 14:12:56
So ... Ich habe das jetzt soweit eingebaut, jetzt habe ich folgende Funktion:

Code
declare function ImportMail ......

Sub Import
   dim lvobjWS as New NotesUIWorkspace   
   dim lvobjMail as NotesDocument   
   
   set lvobjMail = lvobjWS.CurrentDocument.Document
   
   call ImportMail(lvobjMail.UniversalID
end sub

Dummerweise ist aber lvobjWS.CurrentDocument nicht gefüllt. Wenn ich mir die anderen Eigenschaften von lvobjWS im Script Debugger anschaue sehen die richtig aus (lvobjWS.Currentview steht auf dem richtigen Eintrag usw.).

Was mach ich denn hier falsch?

greetz Thomas
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: koehlerbv am 20.12.06 - 14:15:06
Ist das Dokument den im Frontend geöffnet oder versuchst Du aus aus einer NotesUIView heraus?

Bernhard
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 14:19:22
Ist das Dokument den im Frontend geöffnet oder versuchst Du aus aus einer NotesUIView heraus

Nein, ist es nicht. Ich habe ganz normal die Ansicht für die Inbox offen und dort in der Liste eine Mail markiert.
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: Glombi am 20.12.06 - 14:21:31
Dann so:

declare function ImportMail ......


in der    Sub Click:


   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   
   Set doc = dc.GetFirstDocument

call ImportMail( doc.UniversalID )
   
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 14:46:18
...
db.UnprocessedDocuments

...

sind das nicht die ungelesenen Elemente  ... oder stehe ich da jetzt auf der Leitung??? Ich benötige ja mein markiertes Element / meine markierte Elemente?

Ich bin leider bisher nicht zum testen gekommen, da unser Server gerade neu gestartet werden muss :-(
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: m3 am 20.12.06 - 14:48:55
Ich bin leider bisher nicht zum testen gekommen, da unser Server gerade neu gestartet werden muss :-(
Entwickelst Du am Produktionsserver?  :o
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 14:51:31
Ich bin leider bisher nicht zum testen gekommen, da unser Server gerade neu gestartet werden muss :-(
Entwickelst Du am Produktionsserver?  :o
;D neine ... keine Bange :-) von Lotus gibt es bei uns gar keinen Produktionsserver, da wir eigentlich ein anderes Produkt (M... O....) einsetzen. Unsere Kunden haben aber teilweise LN, also sollten wir das ja dann auch unterstüzen ;-)
Titel: Re: EMail an OLE- / COM-Object übergeben
Beitrag von: TGroener am 20.12.06 - 17:10:24
Dann so:

declare function ImportMail ......


in der    Sub Click:


   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   
   Set doc = dc.GetFirstDocument

call ImportMail( doc.UniversalID )
   

so, aus dem DECLARE noch ein CreateObject gemacht und jetzt klappt alles.

Vielen Dank für die Hilfe. Ein dickes Lob an das Forum :-)