none
Mailbody einer S/MIME verschlüsselten Mail lesen - VB 2008 .NET Express RRS feed

  • Frage

  • 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.

    Samstag, 9. Oktober 2010 19:41