Hallo,
ich möchte verschlüsselte Mails anhand bestimmter Wörter im Mailtext (Body) sortieren.
Mit dem nachfolgenden Code bin ich zwar bei unverschlüsselten Mails zum gewünschten Ergebnis gekommen, doch sobald ich auf
eine mit S/MINE verschlüsselte Mail zugreife, kommt der Fehler:
System.InvalidCastException wurde nicht behandelt.
Message="Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Outlook.MailItem" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente
für die Schnittstelle mit der IID "{00063034-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE))."
Hier der Code:
Private Sub MailsSortieren()
btPostfachPrüfen.Enabled = False
btSortieren.Enabled = False
' Postfach verbinden
Dim olApp As Outlook.Application = New Outlook.Application()
Dim olNs As Outlook.NameSpace = olApp.GetNamespace("mapi")
Dim olPostfach As Outlook.Recipient = olNs.CreateRecipient(strPostfach)
Dim olInbox As Outlook.MAPIFolder = olNs.GetSharedDefaultFolder(olPostfach, Outlook.OlDefaultFolders.olFolderDrafts)
Dim olZielfolder As Outlook.MAPIFolder
Dim olItemsCount As Integer
Dim olItem As Object
Dim olTypeOfItem, olMailText As String
Dim result As Boolean
olItemsCount = olInbox.Items.Count
ToolStripProgressBar1.Maximum = olItemsCount
ToolStripProgressBar1.Minimum = 0
olZielfolder = ZielordnerErmitteln(olInbox.Parent, strZielordner)
For i As Integer = olItemsCount To 1 Step -1
Application.DoEvents()
ToolStripProgressBar1.Value = i
olItem = olInbox.Items(i)
olTypeOfItem = GetItemMessageClass(olItem)
If olTypeOfItem = "IPM.Note.SMIME" Then
Dim olMailItem As Outlook.MailItem
olMailItem = olItem <=== in dieser Zeile erscheint die Fehlermeldung
olMailText = olMailItem.Body
result = KriteriumSuchen(olMailText)
If result = True Then
'Mail verschieben
olMailItem.move(olZielfolder)
intVerschobeneMails = intVerschobeneMails + 1
lblVerschobeneMails.Text = intVerschobeneMails.ToString
End If
End If
Next
ToolStripProgressBar1.Value = 0
btPostfachPrfen.Enabled = True
End Sub
Hat jemand eine Idee, was ich falsch mache bzw. wie ich die Schnittstelle definieren muss, um auf den Mailtext zugreifen zukönnen? Die Berechtigungen dazu sind vorhanden - sprich manuell über Outlook kann ich die verschlüsselten Mails lesen.
Vielen Dank schon mal der Stelle.