none
Outlook AddIn Attachment.SaveAsFile Zugriff verweigert

    Frage

  • Hallo,

    ich schreibe an einem Outlook-AddIn für Outlook 2007 und 2010.

    Visual Studio 2017

    Outlook 2016

    Es soll bei einer geschriebenen E-Mail den Textinhalt und die Anlagen in einen Ordner kopieren, diesen verschlüsseln und das Ergebnis wieder in den Anhang stellen.

    Sobald ich aber das Attachment in den Ordner speichern möchte, bekomme ich eine Zugriffsverweigerung.

    Code:

     Public Sub OnActionCallback(ByVal control As Office.IRibbonControl)
            Dim myApp = Globals.ThisAddIn.Application
            Dim myInspectors = myApp.Inspectors
            Dim myInspector = myApp.ActiveInspector
            Dim myMail As Microsoft.Office.Interop.Outlook.MailItem =
                TryCast(myInspector.CurrentItem, Microsoft.Office.Interop.Outlook.MailItem)
    '...
            Dim myAttachments = myMail.Attachments
            Dim myPath = "C:\Users\Public\Documents"
            If myAttachments.Count > 0 Then
                For n = 1 To myAttachments.Count
                    Dim myElement = myAttachments.Item(n)
                    myElement.SaveAsFile(myPath)
                Next
            End If
    '...
    End Sub

    Dies ist die Fehlermeldung:

    System.UnauthorizedAccessException
      HResult=0x80070005
      Nachricht = Die Anlage kann nicht gespeichert werden. Sie besitzen nicht die erforderliche Berechtigung, um diesen Vorgang auszuführen.
      Quelle = <Die Ausnahmequelle kann nicht ausgewertet werden.>
      Stapelüberwachung:
    <Die Ausnahmestapelüberwachung kann nicht ausgewertet werden.>

    Offensichtlich wird schon der Zugriff auf den Anhang verweigert. Vermutlich hat das etwas mit dem Sicherheitskonzept von Outlook zu tun.

    Was kann ich tun?

    Vielen Dank für jede Hilfe.

    Mittwoch, 23. Mai 2018 17:57

Antworten

  • Hallo Phönixen,

    der Fehler liegt im Dateinamen.

    Du musst zu dem vorgegeben Ordner noch den Dateinamen ergänzen.

    Hier mal der Teil den Du ersetzen musst:

    Imports System.IO
    Public Sub OnActionCallback(ByVal control As Office.IRibbonControl)
    .
    .
    .
     For n = 1 To myAttachments.Count
       Dim myElement = myAttachments.Item(n)
       myElement.SaveAsFile(Path.Combine(myPath, myAttachments.Item(n).FileName))
     Next
    .
    .
    .
    
    End Sub

    Denke auch an den Imports am Anfang, der wird für Path benötigt!

    Grüße

    Roland


    • Bearbeitet Roland Franz Donnerstag, 24. Mai 2018 10:16 Tippfehler
    • Als Antwort markiert Phönixen Donnerstag, 24. Mai 2018 18:58
    Donnerstag, 24. Mai 2018 10:15

Alle Antworten

  • Hallo Phönixen,

    der Fehler liegt im Dateinamen.

    Du musst zu dem vorgegeben Ordner noch den Dateinamen ergänzen.

    Hier mal der Teil den Du ersetzen musst:

    Imports System.IO
    Public Sub OnActionCallback(ByVal control As Office.IRibbonControl)
    .
    .
    .
     For n = 1 To myAttachments.Count
       Dim myElement = myAttachments.Item(n)
       myElement.SaveAsFile(Path.Combine(myPath, myAttachments.Item(n).FileName))
     Next
    .
    .
    .
    
    End Sub

    Denke auch an den Imports am Anfang, der wird für Path benötigt!

    Grüße

    Roland


    • Bearbeitet Roland Franz Donnerstag, 24. Mai 2018 10:16 Tippfehler
    • Als Antwort markiert Phönixen Donnerstag, 24. Mai 2018 18:58
    Donnerstag, 24. Mai 2018 10:15
  • Hallo Roland,

    das hat ja wirklich geklappt!

    Blöder Fehler, aber die Fehlermeldung ist auch irreführend.

    Du hast mir sehr geholfen, herzlichen Dank.

    Liebe Grüße

    Phönixen (Volker Alkemper)

    Donnerstag, 24. Mai 2018 19:02