Autor Beitrag
covel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: Mi 30.09.09 08:59 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: Mi 30.09.09 11:55 
Der Fehler "InvalidCastException" erscheint nur bei Emails die verschlüsselt sind. Alles andere funktioniert.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: Fr 02.10.09 08:57 
Der Rückgabewert sollte ein "System.___ComObject" sein.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: Mo 05.10.09 11:12 
Moin Zusammen,

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

user defined image
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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().

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

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


Gruß Daniel
covel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

Win XP PRo
Borland D7/C#
BeitragVerfasst: Mo 05.10.09 14:04 
So habe den Code mal ausprobiert.

Ausgabe: "System.__ComObject"
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 05.10.09 16:57 
Stimmt.. der COde funktioniert nicht... nimm den Debuger.