Hallo,
ich baue bei uns (6.5er und 7er Clients) an einer Lösung, E-Mails mit User-Interaktion sehr einfach in einer Notes-DB zu archivieren. Damit die E-Mails auch nach Jahren noch von anderen Personen als der Empfänger-Kreis lesbar werden, überprüfe ich, ob die E-Mails verschlüsselt sind.
Das prüfen auf die Verschlüsselung führe ich über das NotesDocument-Objekt mit der Methode .isEncrypted durch. Klappt in meinen Tests auch sehr gut.
Meine erste Frage:
Ein Kollege hat mich darauf hingewiesen, dass man sich auf den Rückgabewert von .isEncrypted nicht verlassen kann. Ist die Methode buggy? Oder gab es da nur Probleme bei bestimmten Notes-Versionen? Er konnte mir leider nichts weiter dazu sagen.
Die zweite Frage ist folgende:
Ich möchte mittels User-Interaktion die Mail entschlüsseln lassen. Dazu habe ich hier im Forum diesen Tipp gefunden:
http://atnotes.de/index.php?topic=15495.0Ich habe den Code ein wenig umgebaut und in eine LotusScript-Klasse eingefügt. Die Methode sieht aber grundsätzlich noch so aus:
Public Function decryptDocument() As Integer
On Error 4000 Goto cannotDecrypt
decryptDocument = False
Dim item As NotesItem
' Ist das Dokument überhaupt verschlüsselt?
If Not Me.doc.isEncrypted Then
While (Me.doc.HasItem("Encrypt"))
Set item = Me.doc.GetFirstItem("Encrypt")
Call item.Remove
Wend
decryptDocument = True
Exit Function
End If
' ################# Jetzt entschlüsseln #################
Forall i In Me.doc.Items
If i.IsEncrypted Then
i.IsEncrypted = False
End If
End Forall
Dim dummyitem As NotesItem
Set dummyitem = New NotesItem ( Me.doc, "DummyItem", "" )
dummyitem.IsEncrypted = True
'Dokument verschlüsseln, allerdings wird nur das dummy-icon verschlüsselt
Call Me.doc.Encrypt
Call Me.doc.Save(False, False)
' Jetzt die Items Encrypt und $Seal löschen
While (Me.doc.HasItem("Encrypt"))
Set item = Me.doc.GetFirstItem("Encrypt")
Call item.Remove
Wend
While (Me.doc.HasItem("$Seal"))
Set item = Me.doc.GetFirstItem("$Seal")
Call item.Remove
Wend
Call Me.doc.Save(False, False)
'Dummy Item wieder löschen
While (Me.doc.HasItem("dummyitem"))
Set item = Me.doc.GetFirstItem("dummyitem")
Call item.Remove
Wend
' Speichern...
Call Me.doc.Save(False, False)
decryptDocument = True
exitFunction:
Exit Function
cannotDecrypt:
' Dokument kann nicht entschlüsselt werden. Falscher User!
Resume exitfunction
End Function
Nun sagte mir der Kollege auch dazu, dass das so nicht funktioniert. Hier wird nur zuverlässig der Text entschlüsselt. Anhänge gehen allerdings verloren. Auch dieses Verhalten konnte ich in meinen Tests nicht nachstellen. Bei mir hat in einem reinen ND 6.5.4-Testsystem alles problemlos funktioniert und lesbar entschlüsselt.
Sind euch hier irgendwelche Probleme bekannt, die durch meine Verfahren auftreten können? Gibt es hier ggf. eigenarten, die vom Client kommen? Ist euch irgendetwas bekannt?
Vielen Dank für eure Hilfe.
oson00