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.
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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!