Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: D. Roth. am 26.10.05 - 14:05:26
-
Hallo zusammen , ich möchte gern per C API Links auslesen. Das funktioniert aber leider mit einigen Mails nicht.
Weil das $LINKS Feld nicht vorhanden.
Gibt es einen Lösungsweg ??
Neu Speicher hilft nicht !!
-
Meiner Erfahrung nach werden nicht alle Felder so abgespeichert, wie es der Domino Client angibt (z.B. Body Felder in Mime-Mails).
Ich würde mal mittels C-Api eine Liste aller Felder erstellen und nachschauen, ob da was passendes dabei ist.
-
Ich hab das Feld gefunden(LINKEXPORT2 im Body Feld) !!
Gibt es eine Möglichkeit es auszulesen ( Hab es mit C Api nicht hinbekommen !!). Oder das Feld $Links mit einem Agent zu erstellen ?
-
Da muss ich passen - aber wenn Du weisst wo es steht müsstest Du doch auch den Wert lesen können :-:
-
Mein Problem ist ich lese das RichText Field in den Arbeitspeicher,
aber ich weis nicht was für ein CD Typ der LINKExport2 ist .
-----------Schnipp----------------------------------------------------------------------
' read all the Rich Text item info into an array...
Redim A(0) As APIItem
m = 0 ' counter
tt = 0 ' total bytes
NSFItemInfo hNT, item, Len(item), A(m).Item, dt, A(m).Value, A(m).Size
While Not A(m).Size = 0
tt = tt + A(m).Size
m = m + 1
Redim Preserve A(m)
ItemInfoNext hNT, A(m - 1).Item, item, Len(item), A(m).Item, dt, A(m).Value, A(m).Size
Wend
m = m - 1
' copy the actual Rich Text into a memory block...
OSMemAlloc 0, tt, hM
pm = OSLockObject(hM)
pp = pm
For i = 0 To m
aa = A(i)
na = aa.Size - 2
pv = OSLockObject(aa.Value.hPool) + aa.Value.Block + 2
CopyMem pp, pv, na
OSUnlockObject aa.Value.hPool
pp = pp + na
Next
' scan the Rich Text for composite data records...
R=0
Do
GetCD pm, tt, toff, tlen, sig, R
If sig = ??? Then ' ??? LINKEXPORT2
End If
Loop Until ((sig = 0)Or(sig=???))
-----------Schnipp----------------------------------------------------------------------
Sub GetCD(pointer As Long, length As Long, cdoffset As Long, cdlength As Long, cdsig As Integer, R As Long)
Dim i As Integer
Do
Peek i, pointer + R, 2
cdsig = i And &HFF
cdlength = (i And &HFF00) / 256
cdlength = cdlength And &HFF
If ((cdlength And &HFF) = &HFF) Then
cdlength = 0
Peek cdlength, pointer + R + 2, 2
Elseif cdlength = 0 Then
Peek cdlength, pointer + R + 2, 4
End If
cdoffset = R
If cdsig = 0 Then R = R + 1 Else R = R + cdlength
Loop Until R >= length Or Not cdsig = 0
If R >= length Then
cdoffset = 0
cdlength = 0
cdsig = 0
R = 0
End If
End Sub
-
Frage: Wozu dient das eigentlich?
Fraeg: Bei einigen Mails geht das, bei anderen nicht: Worin unterscheiden sich die Mails?
Frage: Warum C-Api, wenn Du das aus Script heraus machst?
Ich tippe bei Frage 2 auf Mime/Richtext als Unterscheidungskriterium.
-
zu Frage 1 : Ich bekomm eine Email mit dem DocLink den ich mit einem Agent auslese
zu Frage 2 : Sie unterscheiden sich darin das einige Email mit einem Agent erstellt werden und andere nicht ( Diese funzen nicht)
zu Frage 3: Ich will mit LS und der C Api den Inhalt auslesen. ( Gibt es eine bessere Lösung ??)
-
Prüf bitte mal den Type des Items (item.type). Würde mich interessieren, ob das vielleicht Mime Mails sind - dann kommst Du mit NotesMIMEEntity auch ganz ohne C-Api ans Ziel.
-
Hi es sind leider keine MIME Mails !!
-
Kann mir jemand bei der C Api weiterhelfen ??