Entwickler-Ecke

Sonstiges (.NET) - Emails entschlüsseln


covel - Mi 30.09.09 08:59
Titel: Emails entschlüsseln
Moin Moin,

ich habe ein Problem mit verschlüsselten Emails (Test-Zertifikat von TrustCenter.de (SHA1/MailServer MS Exchange)). Ich kann bereits auf die Emails mit den Klassen Microsoft.Office.Interop.Outlook.Items und Microsoft.Office.Interop.Outlook.MailItem zugreifen. Das ganze Funktioniert auch sehr gut.

Nun muss ich aber auch verschlüsselte Emails (Test-Zertifikat von TrustCenter.de (SHA1/MailServer MS Exchange)) empfangen und verarbeiten. Sobald ich aber eine verschlüsselte Email mit (Microsoft.Office.Interop.Outlook.MailItem)items.GetLast() bzw GetPrevious  etc. abrufe, bekomme ich folgende Fehlermeldung: "InvalidCastException“ wurde nicht behandelt".

Leider habe ich keine Ahnung wie ich diese Emails verarbeiten kann. Bin für jeden Tipp dankbar.

Grüße Michael

PS. Sollte das hier nicht das richte Forum sein, bitte verschieben.


danielf - Mi 30.09.09 10:33

Hall covel,

ich kene mich mit der Microsoft.Office.Interop.Outlook nicht aus. Die Exception InvalidCastException heißt im Allgemeinen dass du versuchst eine Klasse auf einen falschen Typ zu casten - sprich dass items.GetLast() nicht vom Typ Microsoft.Office.Interop.Outlook.MailItem ist. Am schnellsten findest du den Typ herraus, wenn du in der Interop-Doku nachschaust oder (was ich machen würde) einen BreakPoint auf die stelle machst und dann im Debug schaust von welchem Basis-Typ das Objekt ist. Wenn das casten funktioniert, können wir uns ja nochmal über das Entschlüsseln unterhalten :)

Gruß Daniel


covel - Mi 30.09.09 11:55

Der Fehler "InvalidCastException" erscheint nur bei Emails die verschlüsselt sind. Alles andere funktioniert.


danielf - Mi 30.09.09 12:19

Ja, weil diese Klasse nicht vom Typ Microsoft.Office.Interop.Outlook.MailItem ist.. deshalb schau bitte nach welcher Klassentyp das ist. Wenn die Exception nicht mehr eintritt kann man mit der entschlüsselung fortsetzen...


covel - Mi 30.09.09 15:44

Laut der Dokumentation:

Return Value
An Object value that represents the next object contained by the collection.


Wenn ich mein Programm debugge, wird mir als Klassentyp "{Microsoft.Office.Interop.Outlook.ItemsClass}" angezeigt.

Ich komme einfach nicht weiter.


Kha - Mi 30.09.09 19:44

Dass die Liste vom Typ Microsoft.Office.Interop.Outlook.Items ist, hast du uns schon im ersten Posting gesagt... viel interessanter wäre es, von welchem Typ der Rückgabewert von GetLast() ist ;) .


covel - Fr 02.10.09 08:57

Der Rückgabewert sollte ein "System.___ComObject" sein.


danielf - Fr 02.10.09 10:13

... :o

Und warum machst du dann den cast? - lass mich raten weil es eine Unterklasse vom Typ ComObject ist...
Aber du castest auf die falsche.. deshalb die InvalidCastException und um nun zu wissen welche es wirklich ist sollst du es im Debug nachschauen... Das die Oberklasse irgendwann auf ein Object kommt hab ich fast vermutet :o


covel - Mo 05.10.09 11:12

Moin Zusammen,

ich habe mal ein Bild angefügt. Bin kein Stück weiter.

user defined image


danielf - Mo 05.10.09 13:24

Hi,

bitte nicht den Typ der items, sondern der Typ von dem zurückgegebenen Objekt von der Funktion GetFirst().


C#-Quelltext
1:
2:
3:
object obj = items.GetFirst();

Console.WriteLine(obj.GetType().FullName);


Gruß Daniel


covel - Mo 05.10.09 14:04

So habe den Code mal ausprobiert.

Ausgabe: "System.__ComObject"


danielf - Mo 05.10.09 16:57

Stimmt.. der COde funktioniert nicht... nimm den Debuger.