Outlookin OpenSharedItem-menetelmä sisältää allekirjoitettujen .msg tiedostojen tiedostokahvan
Alkuperäinen KT-numero: 2633737
Oireet
OpenSharedItem
Microsoft Outlookin objektimallin menetelmä ei vapauta .msg tiedoston tiedostokahvaa, ennen kuin Outlook on käyttämättömänä.
Syy
Tämä ongelma ilmenee, jos .msg tiedosto on allekirjoitettu tai salattu (SMIME-pohjaiset viestit). Se on rajoitus sille, miten Outlook hallitsee sisäisesti SMIME-pohjaisten .msg tiedostojen käsittelyä ja tiedostokahvoja. Outlook tarkistaa viestin allekirjoituksen taustalla ja vapauttaa tiedostokahvan .msg tiedostoon, kun Outlookin käyttämättömyysaika on jonkin aikaa. .msg tiedosto voidaan poistaa vain, kun Outlook on lopettanut kaiken tarvittavan käsittelyn ja vapauttanut tiedostokahvan.
Voit viivyttää tiedoston poistoyritystä, vaikka ei ole suoraa tapaa määrittää, milloin Outlook vapauttaa tiedoston lukituksen.
Ratkaisu
Tätä toimintaa ei ole tarkoitus muuttaa.
Lisätietoja
Office Outlook 2007:ssä ja Outlook 2010:ssä on OpenSharedItem
menetelmä iCalendar (.ics) -tapaamistiedostojen, .vcf- ja Outlook-viestitiedostojen (.msg) avaamiseen. Tämän menetelmän palauttaman objektin tyyppi määräytyy avatun jaetun kohteen lajin mukaan.
Seuraavassa Microsoft Visual Basic for Applications (VBA) Outlook -esimerkissä koodi avaa SignedMessage.msg -tiedoston -menetelmän OpenSharedItem
avulla. Koodi yrittää sitten poistaa .msg-tiedoston sen jälkeen, kun se on sulkenut sähköpostikohteen. Jos .msg tiedosto on allekirjoitettu tai salattu, koodi aiheuttaa käyttö estetty -virheen. Jos allekirjoittamaton tai salaamaton .msg tiedosto kuitenkin avataan, koodi poistaa .msg tiedoston odotetulla tavalla.
Public Sub TestOpenSharedItem()
Dim oNamespace As Outlook.NameSpace
Dim oSharedItem As Outlook.MailItem
Dim oFolder As Outlook.Folder
On Error GoTo ErrRoutine
' Get a reference to a NameSpace object.
Set oNamespace = Application.GetNamespace("MAPI")'Open the Signed Message (.msg) file containing the shared item.
Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\SignedMessage.msg")'Open the Regular Message (.msg) file containing the shared item.
'Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\RegularMessage.msg")
oSharedItem.Close (olDiscard)
Set oSharedItem = Nothing
'Add a reference to Microsoft Scripting Runtime
Dim oFSO As New FileSystemObject
' Try to delete the Signed Message
oFSO.DeleteFile ("C:\Temp\SignedMessage.msg")'Try to delete the Regular Message
'oFSO.DeleteFile ("C:\Temp\RegularMessage.msg")
EndRoutine:
On Error GoTo 0
Set oSharedItem = Nothing
Set oFSO = Nothing
Set oNamespace = Nothing
Exit Sub
ErrRoutine:
Select Case Err.Number
Case -2147024894 ' &H80070002
' Occurs if the specified file or URL could not
' be found, or the file or URL cannot be
' processed by the OpenSharedItem method.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
Case Else
' Any other error that may occur.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
End Select
GoTo EndRoutine
End Sub
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle